In Oracle Database, de HEXTORAW()
functie converteert hexadecimaal naar een onbewerkte waarde.
Syntaxis
De syntaxis gaat als volgt:
HEXTORAW(char)
Waar char
kan een van de CHAR
. zijn , VARCHAR2
, NCHAR
, of NVARCHAR2
gegevenstypen.
Voorbeeld
Hier is een voorbeeld:
SELECT HEXTORAW('74a5cfe') FROM DUAL;
Resultaat:
074A5CFE
We kunnen de DUMP()
. gebruiken functie om het gegevenstype van de retourwaarde te achterhalen:
SELECT DUMP(HEXTORAW('74a5cfe')) FROM DUAL;
Resultaat:
Typ=23 Len=4: 7,74,92,254
De Typ=23
vertelt ons dat de geretourneerde waarde van het type 23 is, wat de type-ID is voor RAW
.
Voor de duidelijkheid, hier is een voorbeeld dat de hexadecimale tekenreeks en de onbewerkte waarde vergelijkt:
SELECT
DUMP('123') AS "r1",
DUMP(HEXTORAW('123')) AS "r2"
FROM DUAL;
Resultaat:
r1 r2 _________________________ _____________________ Typ=96 Len=3: 49,50,51 Typ=23 Len=2: 1,35
De hexadecimale waarde is van het type 96, het type ID voor CHAR
en NCHAR
.
Niet-hexadecimale tekens
Het doorgeven van een waarde die geen hexadecimale waarde is, resulteert in een fout.
Voorbeeld:
SELECT HEXTORAW('z') FROM DUAL;
Resultaat:
Error report - ORA-01465: invalid hex number
Nullargument
Als het argument null
is , het resultaat is null
:
SET NULL 'null';
SELECT HEXTORAW(null)
FROM DUAL;
Resultaat:
null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer een null-waarde optreedt als resultaat van een SQL SELECT
verklaring.
U kunt echter SET NULL
gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Ongeldig aantal argumenten
Bellen HEXTORAW()
zonder argumenten resulteert in een fout:
SELECT HEXTORAW()
FROM DUAL;
Resultaat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
En het doorgeven van te veel argumenten resulteert ook in een fout:
SELECT HEXTORAW('a', 'b')
FROM DUAL;
Resultaat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"