Domanda

In Oracle 10g, come si converte SYS_GUID () in varchar? Sto provando qualcosa del tipo:

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

Che restituisce il byte RAW []. È possibile utilizzare una funzione per convertire RAW in VARCHAR2 nell'istruzione SQL?

È stato utile?

Soluzione

Non dimenticare di usare HEXTORAW (varchar2) quando si confronta questo valore con le colonne RAW .

Non vi è alcuna conversione implicita da VARCHAR2 a RAW . Ciò significa che questa clausola:

WHERE raw_column = :varchar_value

verrà convertito in modo impiccio in:

WHERE RAWTOHEX(raw_column) = :varchar_value

, rendendo così inutilizzabili gli indici su raw_column .

Usa:

WHERE raw_column = HEXTORAW(:varchar_value)

, invece.

Altri suggerimenti

Usa RAWTOHEX (USER_GUID).

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

Per favore, non mod-1 se sbaglio. Vado dalla memoria, quindi questo è un disclaimer da verificare.

TO_CHAR è in realtà diverso tra SQL e PL / SQL.

In SQL TO_CHAR non accetta un raw come hai scoperto.

In PL / SQL To_CHAR avrà un valore non elaborato.

Quindi, se stai comunque eseguendo una procedura, a volte è più facile usare una variabile, ma se stai usando solo SQL, vai con le altre risposte qui.

seleziona CAST (USER_GUID AS VARCHAR2 (100)) dall'utente dove email = 'user@example.com'

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top