Мне просто любопытно, я всегда удивлялся, почему это так.
Пытаясь выяснить, смогу ли я создать его без символа 4 на 15-м персонаже, я запустил это ...
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 должен всегда давать случайный идентификатор, почему эта цифра 4 всегда есть.
BC13DF1C-60FB-41C2-B5B2-8F1A73CF2485
D790D359-AB3D-4657-A864-FA89FACB3E99
DF1BBC0C-4205-48E8-A1B6-EA9544D7C6E5
Является ли 15-я позиция своего рода идентификатором системы, сгенерировавшей уникальный идентификатор?
Фактически, то же самое происходит с функцией System.Guid.Newguid
VB.net. 4 - это единственная вещь от Microsoft?
Редактировать: Возможно, мне следовало бы также спросить, действительно ли они уникальны? Можно ли полагаться, что они уникальны во всей базе данных? Я знаю, что системы баз данных основаны на предположении, что они гарантированно уникальны в базе данных. С несколькими миллионами записей в разных таблицах ... являются ли какие-либо из них потенциально одинаковыми?