Oracle
 sql >> Database >  >> RDS >> Oracle

HEXTORAW() Funzione in Oracle

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"