uniqueidentifier (Transact-SQL)uniqueidentifier (Transact-SQL)

Si applica a:Applies to: sìSQL ServerSQL Server (tutte le versioni supportate) yesSQL ServerSQL Server (all supported versions) Sìdatabase SQL di AzureAzure SQL DatabaseYesdatabase SQL di AzureAzure SQL Database SìIstanza gestita di SQL di AzureAzure SQL Managed InstanceYesIstanza gestita di SQL di AzureAzure SQL Managed Instance sìAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics sìParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data WarehouseSi applica a:Applies to: sìSQL ServerSQL Server (tutte le versioni supportate) yesSQL ServerSQL Server (all supported versions) Sìdatabase SQL di AzureAzure SQL DatabaseYesdatabase SQL di AzureAzure SQL Database SìIstanza gestita di SQL di AzureAzure SQL Managed InstanceYesIstanza gestita di SQL di AzureAzure SQL Managed Instance sìAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics sìParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

GUID a 16 byte.Is a 16-byte GUID.

OsservazioniRemarks

È possibile inizializzare una colonna o variabile locale di tipo uniqueidentifier su un valore specifico nei modi seguenti:A column or local variable of uniqueidentifier data type can be initialized to a value in the following ways:

  • Usando le funzioni NEWID o NEWSEQUENTIALID.By using the NEWID or NEWSEQUENTIALID functions.
  • 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.By converting from a string constant in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, in which each x is a hexadecimal digit in the range 0-9 or a-f. Ad esempio, 6F9619FF-8B86-D011-B42D-00C04FC964FF è un valore uniqueidentifier valido.For example, 6F9619FF-8B86-D011-B42D-00C04FC964FF is a valid uniqueidentifier value.

Con i valori uniqueidentifier è possibile usare gli operatori di confronto.Comparison operators can be used with uniqueidentifier values. Quando si confrontano gli schemi di bit dei due valori, tuttavia, l'ordinamento non viene implementato.However, ordering is not implemented by comparing the bit patterns of the two values. Le uniche operazioni che è possibile eseguire su un valore uniqueidentifier sono i confronti (=, <>, <, >, <=, >=) e il controllo della presenza di valori NULL (IS NULL e IS NOT NULL).The only operations that can be performed against a uniqueidentifier value are comparisons (=, <>, <, >, <=, >=) and checking for NULL (IS NULL and IS NOT NULL). Non è possibile utilizzare altri operatori aritmetici.No other arithmetic operators can be used. Con il tipo di dati uniqueidentifier è possibile usare tutti i vincoli e le proprietà delle colonne, ad eccezione di IDENTITY.All column constraints and properties, except IDENTITY, can be used on the uniqueidentifier data type.

Le colonne uniqueidentifier vengono usate 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.Merge replication and transactional replication with updating subscriptions use uniqueidentifier columns to guarantee that rows are uniquely identified across multiple copies of the table.

Conversione del tipo di dati uniqueidentifierConverting uniqueidentifier Data

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.The uniqueidentifier type is considered a character type for the purposes of conversion from a character expression, and therefore is subject to the truncation rules for converting to a character type. 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.That is, when character expressions are converted to a character data type of a different size, values that are too long for the new data type are truncated. Vedere la sezione relativa agli esempi.See the Examples section.

Limitazioni e restrizioniLimitations and restrictions

I seguenti strumenti e funzionalità non supportano il tipo di dati uniqueidentifier:These tools and features do not support the uniqueidentifier data type:

EsempiExamples

Nell'esempio seguente un valore uniqueidentifier viene convertito in un tipo di dati char.The following example converts a uniqueidentifier value to a char data type.

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.The following example demonstrates the truncation of data when the value is too long for the data type being converted to. Poiché la lunghezza del tipo uniqueidentifier è limitata a 36 caratteri, i caratteri eccedenti vengono troncati.Because the uniqueidentifier type is limited to 36 characters, the characters that exceed that length are truncated.

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

Questo è il set di risultati.Here is the result set.

String                                       TruncatedValue  
-------------------------------------------- ------------------------------------  
0E984725-C51C-4BF4-9960-E1C80E27ABA0wrong    0E984725-C51C-4BF4-9960-E1C80E27ABA0  
  
(1 row(s) affected)  

Vedere ancheSee also

ALTER TABLE (Transact-SQL)ALTER TABLE (Transact-SQL)
CAST e CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)CREATE TABLE (Transact-SQL)
Tipi di dati (Transact-SQL)Data Types (Transact-SQL)
DECLARE @local_variable (Transact-SQL)DECLARE @local_variable (Transact-SQL)
NEWID (Transact-SQL)NEWID (Transact-SQL)
NEWSEQUENTIALID (Transact-SQL) NEWSEQUENTIALID (Transact-SQL)
SET @local_variable (Transact-SQL)SET @local_variable (Transact-SQL)
Updatable Subscriptions for Transactional ReplicationUpdatable Subscriptions for Transactional Replication