Существуют ли правила проверки уникальных идентификаторов в SQL Server? - PullRequest
0 голосов
/ 22 сентября 2011

Предположим, у меня есть немного SQL, который фильтрует данные по столбцу типа UniqueIdentifier.

Select * from core.Pages WHERE PageId = '1DC4E71C-4E68-489D-A837-2C9BA8DCC1DC' (Этот guid был сгенерирован функцией NewID ())

В целях быстрой проверки / проверки работоспособности я решил заменить один из символов на «x» и снова выполнить запрос. Представьте мое удивление, когда я получил сообщение об ошибке:

Ошибка преобразования при преобразовании строки символов в UniqueIdentifier.

Я думал, что GUID или UniqueIdentifier не имеют ограничений по объему, т.е. любой буквенно-цифровой символ может быть заменен любым другим, но кажется, что у SQL Server есть свои представления о том, что представляет собой GUID. Любое использование буквы «Х» порождает эту ошибку. Другие символы, кажется, не расстраивают СУРБД.

Может кто-нибудь объяснить это?

1 Ответ

3 голосов
/ 22 сентября 2011

GUID - это шестнадцатеричное число - это не просто «любой символ может быть использован для замены любого другого символа», результирующая строка должна быть действительным шестнадцатеричным числом. Это не сам GUID, который обязательно является уникальным, это то, что диапазон чисел, которые может представлять GUID (2 ^ 128), что шансы того же GUID, сгенерированного дважды в системе, ничтожны.

...