Как использовать оригинальный Guid в операторе SQL вместо прямого порядка байтов? - PullRequest
4 голосов
/ 21 февраля 2011

Я знаю, что мы можем

INSERT INTO "Table1" VALUES(X'57A00F3015310D4081AD4ADEF3EBDB5E');

Но этот формат с прямым порядком байтов трудно сравнить с оригинальным Guid

300FA057-3115-400D-81AD-4ADEF3EBDB5E

Как использовать исходный Guid в операторе SQL вместо прямого порядка байтов?

Ответы [ 3 ]

4 голосов
/ 21 февраля 2011

Если вы хотите легко сравнить с оригиналом без конвертации, сохраните его как текст.Это займет больше места для хранения и будет медленнее для чтения / записи / сравнения, но это будет более удобочитаемым человеком.

0 голосов
/ 14 июля 2017

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

Пока что я обхожусь с чем-то вроде ниже.

select quote(SomeGuid) from MyTable where name = 'Some Name'

Что возвращает

X'12A0E85D8175514DA792EC3D9A8EFCF7'

Форматирование исходного guid и сравнение с вышеупомянутым:

5DE8A01275814D51A792EC3D9A8EFCF7 - оригинал без тире, прописные буквы 12A0E85D8175514DA792EC3D9A8EFCF7 - цитата (Guid)

Я могу избежать запроса частичного Guid для целей фильтрации.

Примечание% на правой стороне тоже - значение указано

select * from MyTable where quote(SomeGuid) like '%A792EC3D9A8EFCF7%'
0 голосов
/ 21 февраля 2013

Попробуйте:

INSERT INTO [Table1] ([UID]) VALUES ('{57A00F30-1531-0D40-81AD-4ADEF3EBDB5E}');

Я всегда так делал, проблем не нашел.

...