uniqueidentifier (Transact-SQL)

É um GUID de 16 bytes.

Comentários

Uma coluna ou variável local de tipo de dados uniqueidentifier podem ser inicializadas com um valor das seguintes maneiras:

  • Usando a função NEWID.

  • Convertendo de uma constante de cadeia de caracteres no formulário xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, no qual cada x é um dígito hexadecimal no intervalo de 0-9 ou de a-f. Por exemplo, 6F9619FF-8B86-D011-B42D-00C04FC964FF é um valor uniqueidentifier válido.

Operadores de comparação com valores uniqueidentifier podem ser usados. Entretanto, a ordenação não é implementada comparando os padrões de bit dos dois valores. As únicas operações que podem ser executadas com um valor uniqueidentifier são comparações (=, <>, <, >, <=, >=) e verificação de NULL (IS NULL e IS NOT NULL). Nenhum outro operador aritmético pode ser usado. Todas as restrições de coluna e propriedades, exceto IDENTITY, podem ser usadas no tipo de dados uniqueidentifier.

A replicação de mesclagem e a replicação transacional com assinaturas de atualização usam colunas uniqueidentifier para garantir que as linhas sejam identificadas com exclusividade em várias cópias da tabela.

Convertendo dados uniqueidentifier

O tipo uniqueidentifier é considerado um tipo de caractere para fins de conversão de uma expressão de caractere e, portanto, está sujeito às regras de truncamento para conversão em um tipo de caractere. Ou seja, quando expressões de caractere são convertidas em um tipo de dados de caractere de um tamanho diferente, os valores muito longos para o novo tipo de dados são truncados. Consulte a seção Exemplos.

Exemplos

O exemplo a seguir converte um valor uniqueidentifier em um tipo de dados char.

DECLARE @myid uniqueidentifier = NEWID();
SELECT CONVERT(char(255), @myid) AS 'char';

O exemplo a seguir demonstra o truncamento de dados quando o valor é muito longo para o tipo de dados da conversão. Como o tipo uniqueidentifier é limitado a 36 caracteres, os caracteres que excedem esse comprimento ficam truncados.

DECLARE @ID nvarchar(max) = N'0E984725-C51C-4BF4-9960-E1C80E27ABA0wrong';
SELECT @ID, CONVERT(uniqueidentifier, @ID) AS TruncatedValue;

Aqui está o conjunto de resultados.

String                                       TruncatedValue
-------------------------------------------- ------------------------------------
0E984725-C51C-4BF4-9960-E1C80E27ABA0wrong    0E984725-C51C-4BF4-9960-E1C80E27ABA0

(1 row(s) affected)