I Oracle Database, HEXTORAW()
funktion konverterar hexadecimal till ett råvärde.
Syntax
Syntaxen ser ut så här:
HEXTORAW(char)
Där char
kan vara vilken som helst av CHAR
, VARCHAR2
, NCHAR
, eller NVARCHAR2
datatyper.
Exempel
Här är ett exempel:
SELECT HEXTORAW('74a5cfe') FROM DUAL;
Resultat:
074A5CFE
Vi kan använda DUMP()
funktion för att ta reda på datatypen för returvärdet:
SELECT DUMP(HEXTORAW('74a5cfe')) FROM DUAL;
Resultat:
Typ=23 Len=4: 7,74,92,254
Typ=23
talar om för oss att returvärdet är av typ 23, vilket är typ-ID för RAW
.
Bara för att vara tydlig, här är ett exempel som jämför den hexadecimala strängen och råvärdet:
SELECT
DUMP('123') AS "r1",
DUMP(HEXTORAW('123')) AS "r2"
FROM DUAL;
Resultat:
r1 r2 _________________________ _____________________ Typ=96 Len=3: 49,50,51 Typ=23 Len=2: 1,35
Det hexadecimala värdet är av typ 96, vilket är typ-ID för CHAR
och NCHAR
.
Icke Hex-tecken
Att skicka ett värde som inte är ett hexadecimalt värde resulterar i ett fel.
Exempel:
SELECT HEXTORAW('z') FROM DUAL;
Resultat:
Error report - ORA-01465: invalid hex number
Nollargument
Om argumentet är null
, resultatet är null
:
SET NULL 'null';
SELECT HEXTORAW(null)
FROM DUAL;
Resultat:
null
Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när ett nollvärde inträffar som ett resultat av en SQL SELECT
uttalande.
Du kan dock använda SET NULL
för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null
bör returneras.
Ogiltigt antal argument
Anropar HEXTORAW()
utan några argument resulterar i ett fel:
SELECT HEXTORAW()
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Och att skicka för många argument resulterar också i ett fel:
SELECT HEXTORAW('a', 'b')
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"