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 de données uniqueidentifier
Le type uniqueidentifier est considéré comme un type caractère pour les besoins de la conversion à partir d'une chaîne de caractères ; il est par conséquent soumis aux règles de troncation pour la conversion en un type 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 exemples.
Exemples
L'exemple suivant convertit une valeur uniqueidentifier en type de données char.
DECLARE @myid uniqueidentifier = NEWID();
SELECT CONVERT(char(255), @myid) AS 'char';
L'exemple suivant illustre la troncation des données lorsque la valeur est trop longue pour le type de données vers lequel la conversion est effectuée. Étant donné que le type uniqueidentifier est limité à 36 caractères, les caractères qui dépassent 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)
Voir aussi
Référence
CAST et CONVERT (Transact-SQL)
Types de données (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
SET @local\_variable (Transact-SQL)
Concepts
Abonnements pouvant être mis à jour pour la réplication transactionnelle