uniqueidentifier (Transact-SQL)

GUID sur 16 octets.

Notes

Il existe deux manières d'affecter une valeur initiale à une colonne ou à une variable locale du type de données uniqueidentifier :

  • en utilisant la fonction NEWID ;

  • en convertissant à partir d'une constante de chaîne de la forme xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, où chaque x est un chiffre hexadécimal compris dans la plage 0-9 ou a-f. Par exemple, 6F9619FF-8B86-D011-B42D-00C04FC964FF est une valeur uniqueidentifier valide.

Des opérateurs de comparaison peuvent être utilisés avec des valeurs uniqueidentifier. Toutefois, le classement n'est pas effectué par la comparaison des configurations binaires des deux valeurs. Les seules opérations que vous êtes autorisé à effectuer sur une valeur uniqueidentifier sont les comparaisons (=, <>, <, >, <=, >=) et la recherche de valeurs NULL (IS NULL et IS NOT NULL). Aucun autre opérateur arithmétique n'est admis. Toutes les propriétés et contraintes de colonnes, à l'exception de la propriété IDENTITY, sont autorisées dans le type de données uniqueidentifier.

Les réplications de fusion et les réplications transactionnelles possédant des abonnements mis à jour utilisent des colonnes uniqueidentifier afin de garantir que les lignes sont identifiées de manière unique au sein des nombreuses copies de la table.

Conversion des données uniqueidentifier

Le type uniqueidentifier est considéré comme un type de caractère pour les besoins de la conversion à partir d'une expression de caractères. Par conséquent, il est soumis aux règles de troncation pour la conversion vers un type de caractère. Autrement dit, lorsque des expressions de caractères sont converties en type caractère de taille différente, les valeurs trop longues pour le nouveau type de données sont tronquées. Consultez la section consacrée aux exemples.

Exemples

L'exemple suivant convertit une valeur uniqueidentifier en un type de données char.

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

L'exemple suivant illustre la troncation de données lorsque la valeur est trop longue pour le type de données cible de la conversion. Le type uniqueidentifier étant limité à 36 caractères, ceux qui se trouvent au-delà de cette longueur sont tronqués.

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

Voici l'ensemble des résultats.

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

(1 row(s) affected)