Поделиться через


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)