sql-server - 从两个值创建唯一编号;位移位?

标签 sql-server sql-server-2005

我有一张包含 ID 和区域设置的表格。同一 ID 可以在不同的语言环境中多次列出:

ID      Locale
123456  EN_US
234567  EN_US
234567  EN_CA
345678  EN_US

我需要为每条记录创建一个数字 ID(整数)形式的唯一标识符,同时保持对原始组件进行逆向工程的能力。

我在想移位可能会起作用:为每个语言环境分配一个数值,但我不太确定如何实现。有没有人遇到过这个挑战?另外,我有 75 个语言环境,所以我不确定这是否会成为移位问题。

最后,我将 SQL Server 与链接服务器连接到 Teradata(这是我的数据源)。我认为 Teradata 不支持开箱即用的按位,所以我假设我必须在 MSSQL 中执行此操作。

谢谢。

最佳答案

您可以创建复合数字键,将 75 个唯一值映射到数字键的最后 2 位数字。您可以使用简单的模数 100 算法或只是一个子字符串来解析组件。如果您将超过 100 个值,请改用 3 位数字。总共 9 位数字将适合 int 一个 int,10-18 将适合一个 bigint。

关于sql-server - 从两个值创建唯一编号;位移位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18724456/

相关文章:

sql - 返回受 SQL 事务影响的总行数

c# - 以编程方式连接和刷新 SQL Server Analysis Service 上的表格数据模型

分区上的 SQL Sum

sql-server - 将 null 导出到 .csv

c# - 如何使用 SQL Server 2005、ASP.NET MVC 和 EF 进行身份验证

sql - R 和 MSSQL - 与临时表的通信(在 channel 上找不到表)

sql-server - 关键字 'VIEW' 附近的语法不正确

Hibernate自动递增id sql server 2005

sql - 如何以 “12”的格式显示数字 “0000012”

sql - 从表中选择连续范围