V databázi Oracle je to HEXTORAW()
funkce převede hexadecimální hodnotu na nezpracovanou hodnotu.
Syntaxe
Syntaxe vypadá takto:
HEXTORAW(char)
Kde char
může být kterýkoli z CHAR
, VARCHAR2
, NCHAR
nebo NVARCHAR2
datové typy.
Příklad
Zde je příklad:
SELECT HEXTORAW('74a5cfe') FROM DUAL;
Výsledek:
074A5CFE
Můžeme použít DUMP()
funkce pro zjištění datového typu návratové hodnoty:
SELECT DUMP(HEXTORAW('74a5cfe')) FROM DUAL;
Výsledek:
Typ=23 Len=4: 7,74,92,254
Typ=23
říká nám, že návratová hodnota je typu 23, což je ID typu pro RAW
.
Aby bylo jasno, zde je příklad, který porovnává hexadecimální řetězec a nezpracovanou hodnotu:
SELECT
DUMP('123') AS "r1",
DUMP(HEXTORAW('123')) AS "r2"
FROM DUAL;
Výsledek:
r1 r2 _________________________ _____________________ Typ=96 Len=3: 49,50,51 Typ=23 Len=2: 1,35
Hexadecimální hodnota je typu 96, což je ID typu pro CHAR
a NCHAR
.
Nehexadecimální znaky
Předání hodnoty, která není hexadecimální, způsobí chybu.
Příklad:
SELECT HEXTORAW('z') FROM DUAL;
Výsledek:
Error report - ORA-01465: invalid hex number
Nulový argument
Pokud je argument null
, výsledkem je null
:
SET NULL 'null';
SELECT HEXTORAW(null)
FROM DUAL;
Výsledek:
null
Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo, kdykoli se v důsledku příkazu SQL SELECT
objeví hodnota null prohlášení.
Můžete však použít SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null
by měl být vrácen.
Neplatný počet argumentů
Volání HEXTORAW()
bez jakýchkoli argumentů vede k chybě:
SELECT HEXTORAW()
FROM DUAL;
Výsledek:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
A předání příliš mnoha argumentů také vede k chybě:
SELECT HEXTORAW('a', 'b')
FROM DUAL;
Výsledek:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"