uniqueidentifier (Transact-SQL)
Ein 16-Byte-GUID.
Hinweise
Es gibt die folgenden Möglichkeiten, um eine Spalte oder lokale Variable vom Datentyp uniqueidentifier zu initialisieren:
Mithilfe der NEWID-Funktion.
Durch die Konvertierung einer Zeichenfolgenkonstanten der Form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, in der jedes x für eine hexadezimale Ziffer zwischen 0 und 9 bzw. a und f steht. Beispielsweise ist 6F9619FF-8B86-D011-B42D-00C04FC964FF ein gültiger uniqueidentifier-Wert.
Vergleichsoperatoren können mit uniqueidentifier-Werten verwendet werden. Allerdings erfolgt das Sortieren nicht durch Vergleichen der Bitmuster der beiden Werte. Die einzigen Operationen, die für einen uniqueidentifier-Wert ausgeführt werden können, sind Vergleiche (=, <>, <, >, <=, >=) und die Überprüfung auf NULL (IS NULL und IS NOT NULL). Es können keine weiteren arithmetischen Operatoren verwendet werden. Alle Spalteneinschränkungen und -eigenschaften, außer der IDENTITY-Eigenschaft, können mit dem uniqueidentifier-Datentyp verwendet werden.
Die Merge- und die Transaktionsreplikation mit Abonnements mit Update verwenden uniqueidentifier-Spalten. Dadurch wird sichergestellt, dass die Zeilen über mehrere Kopien der Tabelle hinweg eindeutig identifiziert werden.
Konvertieren von uniqueidentifier-Daten
Der uniqueidentifier-Typ wird bei der Konvertierung von Zeichenausdrücken als Zeichentyp behandelt und unterliegt daher den Kürzungsregeln für die Konvertierung in einen Zeichentyp. Das heißt, wenn Zeichenausdrücke in einen Zeichendatentyp mit einer anderen Größe konvertiert werden, dann werden Werte, die für den neuen Datentyp zu lang sind, abgeschnitten. Siehe den Abschnitt "Beispiele".
Beispiele
Das folgende Beispiel konvertiert einen uniqueidentifier-Wert in einen char-Datentyp.
DECLARE @myid uniqueidentifier = NEWID();
SELECT CONVERT(char(255), @myid) AS 'char';
Im folgenden Beispiel wird das Abschneiden von Daten veranschaulicht, wenn der Wert zu lang für den Datentyp ist, in den er konvertiert wird. Da der uniqueidentifier-Typ auf 36 Zeichen beschränkt ist, werden die Zeichen, die diese Länge überschreiten, abgeschnitten.
DECLARE @ID nvarchar(max) = N'0E984725-C51C-4BF4-9960-E1C80E27ABA0wrong';
SELECT @ID, CONVERT(uniqueidentifier, @ID) AS TruncatedValue;
Dies ist das Resultset.
String TruncatedValue
-------------------------------------------- ------------------------------------
0E984725-C51C-4BF4-9960-E1C80E27ABA0wrong 0E984725-C51C-4BF4-9960-E1C80E27ABA0
(1 row(s) affected)
Siehe auch
Verweis
CAST und CONVERT (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
SET @local\_variable (Transact-SQL)