【发布时间】:2012-08-28 06:11:16
【问题描述】:
我使用 sql server 2012,是否可以基于两个或三个值(主要是 varchars 或十进制)生成唯一标识符值,我的意思是任何采用 0-9 和 a-z 的数据类型。
通常唯一标识符因系统而异。对于我的要求,我需要一个自定义的,当我调用这个函数时,它应该在所有系统中得到相同的值。
我一直在考虑将这些值转换为 varbinary 并获取其中的某些部分并生成一个唯一标识符。这种方法有多好。
我仍在研究这种方法。
请提供您的建议。
【问题讨论】:
-
“选择 NEWID()”有什么问题?
-
“对于我的要求,我需要一个自定义的,当我调用这个函数时,它应该让我在所有系统中得到相同的值”然后你不需要一个 uniqueidentifier ....
-
@David Brabant,NEWID() 生成随机值,但我需要该值特定于我传递的字符串。
-
@Mitch Wheat,我需要唯一标识符的类型,用于其他目的。
-
根据其他论坛中的答案,我尝试了这个,“SELECT distinct cast(Hashbytes('SHA1',CAST(TableName + ColumnName + ColumnValue AS VARBINARY(max))) as uniqueidentifier) from Locale " 谁能告诉我这个查询有多好。
标签: sql-server uniqueidentifier