【发布时间】:2014-07-20 23:35:31
【问题描述】:
我需要在 SQL Server 中生成如下所示的唯一代码
8E9560C,
2CAF902,
ADE4A86,
DF6A69E,
8074D34,
有人知道我该如何实现吗?
【问题讨论】:
-
为什么需要这些独特的随机码?你想做什么?
标签: sql-server
我需要在 SQL Server 中生成如下所示的唯一代码
8E9560C,
2CAF902,
ADE4A86,
DF6A69E,
8074D34,
有人知道我该如何实现吗?
【问题讨论】:
标签: sql-server
你试过了吗?
select newid()
或者如果你只想要 7 个字符:
select left(newid(),7)
【讨论】:
NEWID() 生成 v4 GUID。在该 GUID 方案中,前 8 个字节可以是任何十六进制数字 0-F,并且将完全由随机生成的数据组成。不能保证是唯一的;事实上,没有 v4 GUID 保证是唯一的,只是随机位(128 个中的 112 个)可以表示 5.19 个十进制数之一,因此它们中的任何两个在同一系统中匹配的几率是无穷小的。只有前 8 个字节,您将只有 2^32 个组合,这可能看起来仍然很多(40 亿分之一),但由于生日问题,在生成了很少的 77,000 个之后,您有 50-50 个镜头在生成副本时。
【讨论】: