gpt4 book ai didi

sql - 生成唯一的字母数字 ID

转载 作者:行者123 更新时间:2023-12-02 05:30:25 30 4
gpt4 key购买 nike

我的想法是为我的表在 SQL Server 中为我的表生成一个唯一 ID 字母数字所以我使用 Newid 函数来执行此操作,然后将结果截断为 8 个字符。我的问题是这个代码我确定有一个唯一的 ID?或者也许不在这里是代码:

DECLARE @r varchar(8) 

SELECT @r = coalesce(@r, '') + n
FROM (SELECT top 8 CHAR(number) n
FROM master..spt_values
WHERE type = 'P' AND
(number between ascii(0) and ascii(9)
OR number between ascii('A') and ascii('Z')
OR number between ascii('a') and ascii('z'))
ORDER BY newid()) a

DECLARE @id varchar(10)
SET @id=CONVERT(varchar(8), @r)
DECLARE @myid varchar(10)

SELECT @myid=SUBSTRING(@r,1,2)+'-'+SUBSTRING(@r,3,3)+'-'+SUBSTRING(@r,6,3)

PRINT 'Value of @myid is: '+ @myid

最佳答案

NEWID() 生成 v4 GUID。在该 GUID 方案中,前 8 个字节可以是任何十六进制数字 0-F,并且将完全由随机生成的数据组成。这不能保证是唯一的;事实上,没有 v4 GUID 保证是唯一的,只是随机位(128 位中的 112 位)可以代表 5.19 个十进制 数字之一,因此它们中的任何两个在同一系统中匹配的几率是无穷小的。只有前 8 个字节,您将只有 2^32 种组合,这看起来可能仍然很多(40 亿分之一)但是由于生日问题,在生成了不足 77,000 个之后,您有 50-50 个机会在生成副本时。

关于sql - 生成唯一的字母数字 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12467833/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com