uniqueidentifier (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric

16-байтовый идентификатор GUID.

Замечания

Столбец или локальную переменную типа uniqueidentifier можно инициализировать следующими способами:

  • с помощью функции NEWID или NEWSEQUENTIALID;
  • путем преобразования из строковой константы в виде 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:

Примеры

В следующем примере значение 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)  

См. также

Инструкция ALTER TABLE (Transact-SQL)
CAST и CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)
Типы данных (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
NEWID (Transact-SQL)
NEWSEQUENTIALID (Transact-SQL)
SET @local_variable (Transact-SQL)
Updatable Subscriptions for Transactional Replication