Udostępnij za pomocą


Uniqueidentifier (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

To 16-bajtowy identyfikator GUID.

Remarks

Kolumna lub zmienna lokalna typu danych uniqueidentifier można zainicjować na wartość w następujący sposób:

  • Za pomocą funkcji NEWID lub NEWSEQUENTIALID .
  • Konwertując z stałej ciągu w postaci --xxxxxxxxxxxx--, w której każdy x jest cyfrą szesnastkową w zakresie od 0 do 9 lub a-f. Na przykład 6F9619FF-8B86-D011-B42D-00C04FC964FF jest prawidłową unikatową wartością.

Operatory porównania mogą być używane z unikatowymi wartościamiidentyfikatora . Jednak kolejność nie jest implementowana przez porównanie wzorców bitowych dwóch wartości. Jedynymi operacjami, które można wykonać względem unikatowej wartościidentifier, są porównania (=, <>, <><= , =, >=) i sprawdzanie wartości NULL (IS NULL i IS NOT NULL). Nie można używać innych operatorów arytmetycznych. Wszystkie ograniczenia i właściwości kolumn, z wyjątkiem IDENTITY, mogą być używane w unikatowym typie danychidentyfikatora .

Scal replikację i replikację transakcyjną z aktualizowaniem subskrypcji używają unikatowych kolumnidentyfikatora w celu zagwarantowania, że wiersze są jednoznacznie identyfikowane w wielu kopiach tabeli.

Konwertowanie unikatowych danychidentyfikatora

Typ uniqueidentifier jest uważany za typ znaku na potrzeby konwersji z wyrażenia znaku i dlatego podlega regułom obcinania konwersji na typ znaku. Oznacza to, że gdy wyrażenia znaków są konwertowane na typ danych znaków o innym rozmiarze, wartości, które są zbyt długie dla nowego typu danych, są obcinane. Zobacz sekcję Przykłady.

Ograniczenia i ograniczenia

Te narzędzia i funkcje nie obsługują uniqueidentifier typu danych:

Examples

Poniższy przykład konwertuje uniqueidentifier wartość na char typ danych.

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

W poniższym przykładzie pokazano obcięcie danych, gdy wartość jest zbyt długa dla typu danych konwertowanego na. Ponieważ typ uniqueidentifier jest ograniczony do 36 znaków, znaki, które przekraczają długość, są obcinane.

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

Oto zestaw wyników.

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

Zobacz także

ZMIEŃ TABELĘ (Transact-SQL)
RZUTOWANIE i konwertowanie (Transact-SQL)
CREATE TABLE (Transact-SQL)
typy danych (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
NEWID (Transact-SQL)
NEWSEQUENTIALID (Transact-SQL)
SET @local_variable (Transact-SQL)
Subskrypcje z możliwością aktualizacji na potrzeby replikacji transakcyjnej