0

我使用 sql server 2012,是否可以基于两个或三个值(主要是 varchars 或十进制)生成唯一标识符值,我的意思是任何采用 0-9 和 az 的数据类型。

通常唯一标识符因系统而异。对于我的要求,我需要一个自定义的,当我调用这个函数时,它应该在所有系统中得到相同的值。

我一直在考虑将这些值转换为 varbinary 并获取其中的某些部分并生成一个唯一标识符。这种方法有多好。

我仍在研究这种方法。

请提供您的建议。

4

2 回答 2

0

Uniqueidentifier 的标准文档详细说明了它们是如何生成的。http://www.ietf.org/rfc/rfc4122.txt

我会读一读(尤其是 4.1.2。因为它破坏了应该如何生成 guid),也许我会继续使用时间戳组件,但硬编码您的网络位置元素,这将为您提供所需的内容。

于 2012-08-28T06:20:39.370 回答
0

您描述的是值的哈希值。使用HASHBYTES函数将您的值消化成散列。但是您对问题的定义与唯一性要求相矛盾, 因为根据定义,将大小为 M 的输入减少为大小为 N 的散列,其中 N < M,可能会产生冲突。如果您真的需要唯一性,那么以至少允许唯一性的方式重新定义要求。也就是说,必须放弃对它的要求应该在所有系统中让我获得相同的值,因为保证它的唯一方法是准确输出输入。如果您删除此要求,则新要求满足NEWID()(是的,它不考虑输入,但它不必须满足您的要求)。

于 2012-08-28T06:33:50.537 回答