加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – SQL Server:为什么GUID的第15个char总是4?

发布时间:2020-12-12 08:50:47 所属栏目:MsSql教程 来源:网络整理
导读:我只是好奇,我一直想知道为什么会这样. 试图找出我是否可以创建一个没有第十五个角色的角色4,我跑了这个… DECLARE @GUID AS NVARCHAR(36)DECLARE @COUNT AS INTEGERSET @COUNT = 0SET @GUID = CAST(NEWID() AS NVARCHAR(36))WHILE SUBSTRING(@GUID,15,1) = '
我只是好奇,我一直想知道为什么会这样.

试图找出我是否可以创建一个没有第十五个角色的角色4,我跑了这个…

DECLARE @GUID AS NVARCHAR(36)
DECLARE @COUNT AS INTEGER

SET @COUNT = 0
SET @GUID = CAST(NEWID() AS NVARCHAR(36))

WHILE SUBSTRING(@GUID,15,1) = '4'
BEGIN
    SET @COUNT = @COUNT + 1
    SET @GUID = CAST(NEWID() AS NVARCHAR(36))
END

PRINT 'Attempts : ' + CAST(@COUNT AS NVARCHAR(MAX))
PRINT @GUID

你可能会猜到,这从来没有为我而结束.我在周末在服务器上运行

如果NewID应该总是给出一个随机的ID,为什么这4个总是在那里.

BC13DF1C-60FB-41C2-B5B2-8F1A73CF2485
D790D359-AB3D-4657-A864-FA89FACB3E99
DF1BBC0C-4205-48E8-A1B6-EA9544D7C6E5

对于生成唯一标识符的系统来说,第15位是否有某种识别?

事实上,VB.net的System.Guid.Newguid函数也是一样的.这4只是微软吗?

编辑:也许我还应该问,他们是否真的是独一无二的?一个人可以依靠一个在整个数据库中独一无二吗?我知道基于数据库系统的这些假设保证在数据库内是唯一的.在不同表中有数百万条记录…其中任何一个可能相同?

解决方法

4表示它是使用伪随机数生成的;见 Wikipedia’s article for Globally Unique Identifiers under Algorithm.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读