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.(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |