uniqueidentifier (Transact-SQL)
16-байтовый идентификатор GUID.
Замечания
Столбец или локальную переменную типа uniqueidentifier можно инициализировать следующими способами:
При помощи функции NEWID.
Преобразование из строковой константы в формате xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, где каждый символ x представляет шестнадцатеричную цифру в диапазоне 0–9 или a–f. Например, 6F9619FF-8B86-D011-B42D-00C04FC964FF является допустимым значением типа uniqueidentifier.
Значения uniqueidentifier поддерживают операторы сравнения, однако их упорядочивание реализовано без использования поразрядного сравнения. Над значениями uniqueidentifier можно выполнять только операции сравнения (=, <>, <, >, <=, >=) и проверки на значение NULL (IS NULL и IS NOT NULL). Никакие другие арифметические операторы не поддерживаются. К типу данных uniqueidentifier можно применять все ограничения и свойства столбцов за исключением IDENTITY.
При репликации слиянием и репликации транзакций с обновляемыми подписками столбцы uniqueidentifier используются для уникальной идентификации строк в нескольких копиях таблицы.
Преобразование данных типа uniqueidentifier
Тип uniqueidentifier представляет собой символьный тип (чтобы обеспечить возможность преобразования из символьного выражения), поэтому на него распространяются правила усечения при преобразовании в символьный тип. То есть при преобразовании символьного выражения в символьный тип данных другой длины значения, слишком длинные для нового типа данных, усекаются. См. подраздел «Примеры».
Примеры
В следующем примере значение типа uniqueidentifier преобразуется в тип данных char.
DECLARE @myid uniqueidentifier = NEWID();
SELECT CONVERT(char(255), @myid) AS 'char';
В следующем примере показано усечение данных, выполняемое в том случае, если значение является слишком длинным для того, чтобы его можно было преобразовать в тип данных. Поскольку тип данных uniqueidentifier ограничен 36 символами, все символы за пределами этой длины будут усечены.
DECLARE @ID nvarchar(max) = N'0E984725-C51C-4BF4-9960-E1C80E27ABA0wrong';
SELECT @ID, CONVERT(uniqueidentifier, @ID) AS TruncatedValue;
Ниже приводится результирующий набор.
String TruncatedValue
-------------------------------------------- ------------------------------------
0E984725-C51C-4BF4-9960-E1C80E27ABA0wrong 0E984725-C51C-4BF4-9960-E1C80E27ABA0
(1 row(s) affected)
См. также