12

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

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 ...

Я снова отредактировал исходный вопрос, чтобы решить эту проблему. Мне нужно обменяться данными с системой, которая принимает цифры, но не алфавитно-цифровые коды, и подумал, что GUID, который не выглядит как GUID, будет работать.

от Snowy

У меня был этот случай, только для меня, с изюминкой. Мне нужно преобразовать четырехбайтовое целое число в GUID и обратно. Усечение не является проблемой, поскольку оно не начинается с GUID.

от Joshua

<code>uniqueidentifier</code> 16 байтов.<code>bigint</code> только 8. Это не собирается работать. Почему вы пытаетесь это сделать?

от Martin Smith

Что бы означало такое обращение ???

от Oded

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 будет равна нулю, и это именно то, что вы видите.

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