Вопрос по sql-server, sql, sql-server-2008 – Преобразовать из UniqueIdentifier в BigInt и обратно?

12
declare @uu uniqueidentifier =  'C50B0567-F8CC-4219-A1E1-91C97BD9AE1B'
select @uu
declare @zaza bigint = ( select convert(bigint, convert (varbinary(8), @uu, 1)) )
select @zaza
select CONVERT( uniqueidentifier , convert( varbinary(16) , @zaza , 1 ) )

Я думал, что у меня есть быстрый способ конвертировать значения уникального идентификатора в Big Int и обратно. Но есть проблема во втором конверте. Кто-нибудь может прокомментировать правильный способ полностью преобразовать GUID в число и обратно? Я получаю только часть GUID, а не все, когда пытаюсь преобразовать его из числового представления в исходный GUID.

Я хочу передать целое число (я думаю, что оно будет классифицировано как «Большой BigInt» в MSSQL?) В удаленную систему и просто использовать символы 0-9, и все же получить случайную уникальность NewId ().

Я снова отредактировал исходный вопрос, чтобы решить эту проблему. Мне нужно обменяться данными с системой, которая принимает цифры, но не алфавитно-цифровые коды, и подумал, что GUID, который не выглядит как GUID, будет работать. Snowy
У меня был этот случай, только для меня, с изюминкой. Мне нужно преобразовать четырехбайтовое целое число в GUID и обратно. Усечение не является проблемой, поскольку оно не начинается с GUID. Joshua
Что бы означало такое обращение ??? Oded
uniqueidentifier 16 байтов.bigint только 8. Это не собирается работать. Почему вы пытаетесь это сделать? Martin Smith

Ваш Ответ

1   ответ
15

ератор SQL в SQL Management Studio, я получаю:

------------------------------------
C50B0567-F8CC-4219-A1E1-91C97BD9AE1B

(1 row(s) affected)


--------------------
7423352504965404994

(1 row(s) affected)


------------------------------------
C50B0567-F8CC-4219-0000-000000000000

(1 row(s) affected)

Так как вы конвертируете 8-байтовое значение в 16-байтовый guid, половина guid будет равна нулю, и это именно то, что вы видите.

Похожие вопросы