Question

Dans oracle 10g, comment convertir SYS_GUID () en varchar? J'essaie quelque chose comme:

select USER_GUID from user where email = 'user@example.com'

Qui retourne l'octet RAW []. Est-il possible d’utiliser une fonction pour convertir le RAW en VARCHAR2 dans l’instruction SQL?

Était-ce utile?

La solution

N'oubliez pas d'utiliser HEXTORAW (varchar2) lorsque vous comparez cette valeur aux colonnes RAW .

Il n'y a pas de conversion implicite de VARCHAR2 en RAW . Cela signifie que cette clause:

WHERE raw_column = :varchar_value

sera converti de manière implicite en:

WHERE RAWTOHEX(raw_column) = :varchar_value

, rendant ainsi les index sur raw_column inutilisables.

Utiliser:

WHERE raw_column = HEXTORAW(:varchar_value)

à la place.

Autres conseils

Utilisez RAWTOHEX (USER_GUID).

select RAWTOHEX(USER_GUID) from user where email = 'user@example.com'

S'il vous plaît ne mod-1 si je me trompe. Je vais de mémoire donc c'est un avertissement à vérifier.

TO_CHAR est réellement différent entre SQL et PL / SQL.

En SQL, TO_CHAR ne prend pas un brut comme vous l’avez découvert.

En PL / SQL, To_CHAR prend une valeur brute.

Donc, si vous êtes de toute façon dans une procédure, il est parfois plus facile d'utiliser une variable, mais si vous utilisez seulement SQL, utilisez les autres réponses ici.

sélectionnez CAST (USER_GUID AS VARCHAR2 (100)) à partir de l'utilisateur, où email = 'utilisateur@exemple.com'.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top