In Oracle Database, il HEXTORAW()
la funzione converte esadecimale in un valore grezzo.
Sintassi
La sintassi è questa:
HEXTORAW(char)
Dove char
può essere uno qualsiasi dei CHAR
, VARCHAR2
, NCHAR
o NVARCHAR2
tipi di dati.
Esempio
Ecco un esempio:
SELECT HEXTORAW('74a5cfe') FROM DUAL;
Risultato:
074A5CFE
Possiamo usare il DUMP()
funzione per scoprire il tipo di dati del valore restituito:
SELECT DUMP(HEXTORAW('74a5cfe')) FROM DUAL;
Risultato:
Typ=23 Len=4: 7,74,92,254
Il Typ=23
ci dice che il valore restituito è di tipo 23, che è l'ID del tipo per RAW
.
Giusto per essere chiari, ecco un esempio che confronta la stringa esadecimale e il valore grezzo:
SELECT
DUMP('123') AS "r1",
DUMP(HEXTORAW('123')) AS "r2"
FROM DUAL;
Risultato:
r1 r2 _________________________ _____________________ Typ=96 Len=3: 49,50,51 Typ=23 Len=2: 1,35
Il valore esadecimale è di tipo 96, che è l'ID del tipo per CHAR
e NCHAR
.
Caratteri non esadecimali
Il passaggio di un valore che non è un valore esadecimale genera un errore.
Esempio:
SELECT HEXTORAW('z') FROM DUAL;
Risultato:
Error report - ORA-01465: invalid hex number
Argomento nullo
Se l'argomento è null
, il risultato è null
:
SET NULL 'null';
SELECT HEXTORAW(null)
FROM DUAL;
Risultato:
null
Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che si verifica un valore nullo come risultato di un SQL SELECT
dichiarazione.
Tuttavia, puoi usare SET NULL
per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null
deve essere restituito.
Conteggio argomenti non valido
Chiamata a HEXTORAW()
senza alcun argomento genera un errore:
SELECT HEXTORAW()
FROM DUAL;
Risultato:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
E anche passare troppi argomenti provoca un errore:
SELECT HEXTORAW('a', 'b')
FROM DUAL;
Risultato:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"