2010-12-14 6 views
1

Nous avons une table utilisateur dont l'ID utilisateur est un type uniqueidentifier dans la base de données Sybase. La valeur que nous mettons est une valeur GUID de notre application C#. Lorsque nous regardons la table via l'outil Sybase, la valeur indique 3835FD60-ACDE-4345-99AB-54263E9A07AE. Lorsque nous copions/collez ce champ dans un fichier texte, il affiche 0x3835fd60acde434599ab54263e9a07ae. Lorsque nous accédons à ce champ en utilisant odbc (en python) génère la chaîne (Hex) comme 3835FD60ACDE434599AB54263E9A07AE.pourquoi GUID uniqueidentifier affiche une valeur légèrement différente

Pourquoi cela se voit différemment? grâce

Répondre

8

Un Guid est juste un ensemble d'octets; ce n'est pas une chaîne. La même chose qu'un entier 123 n'est pas la chaîne "123". Il existe plusieurs façons de l'afficher comme une chaîne lisible par l'homme. Vous pouvez utiliser le spécificateur de format avec Guid.ToString(string) pour choisir un format: http://msdn.microsoft.com/en-us/library/97af8hh4.aspx

Simplement: ils ont choisi d'utiliser différents formats. Le Guid est le même.

1

Généralement, les valeurs UUID/GUID sont stockées sous la forme d'un entier de 128 bits, de sorte que tous les formats d'affichage sont valides. L'affichage formaté auquel nous sommes habitués lorsque nous faisons référence à un UUID ou GUID est juste une transformation de cet entier de 128 bits dans un format de chaîne pratique.

En Python, vous devriez pouvoir passer la valeur à la classe uuid.UUID afin d'obtenir un objet UUID que vous pouvez ensuite formater de la manière habituelle.

Questions connexes