uniqueidentifier (Transact-SQL)

GUID a 16 byte.

Osservazioni

È possibile inizializzare una colonna o variabile locale di tipo uniqueidentifier su un valore specifico nei modi seguenti:

  • Tramite la funzione NEWID.

  • Tramite la conversione da una costante stringa nel formato xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, in cui ogni x rappresenta una cifra esadecimale compresa nell'intervallo 0-9 oppure a-f. Ad esempio, 6F9619FF-8B86-D011-B42D-00C04FC964FF è un valore uniqueidentifier valido.

Con valori uniqueidentifier è possibile utilizzare gli operatori di confronto. Quando si confrontano gli schemi di bit dei due valori, tuttavia, l'ordinamento non viene implementato. Le uniche operazioni che è possibile eseguire su un valore uniqueidentifier sono i confronti (=, <>, <, >, <=, >=) e la verifica del valore NULL (IS NULL e IS NOT NULL). Non è possibile utilizzare altri operatori aritmetici. Con il tipo di dati uniqueidentifier è possibile utilizzare tutti i vincoli e le proprietà delle colonne, ad eccezione di IDENTITY.

Le colonne uniqueidentifier vengono utilizzate nella replica transazionale e di tipo merge con sottoscrizioni aggiornabili per garantire che le righe siano identificate in modo univoco in più copie della tabella.

Conversione del tipo di dati uniqueidentifier

Per la conversione da un'espressione di caratteri, il tipo uniqueidentifier è considerato un tipo di dati carattere ed è pertanto soggetto alle regole di troncamento per la conversione in un tipo di dati carattere. Vale a dire che, se un'espressione di caratteri viene convertita in un tipo di dati carattere di dimensioni diverse, i valori troppo lunghi per il nuovo tipo di dati vengono troncati. Vedere la sezione relativa agli esempi.

Esempi

Nell'esempio seguente un valore uniqueidentifier viene convertito in un tipo di dati char.

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

Nell'esempio seguente viene illustrato il troncamento dei dati quando il valore è troppo lungo per il tipo di dati in cui avviene la conversione. Poiché la lunghezza del tipo uniqueidentifier è limitata a 36 caratteri, i caratteri eccedenti vengono troncati.

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

Set di risultati:

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

(1 row(s) affected)