In der Oracle-Datenbank das HEXTORAW()
Funktion konvertiert hexadezimal in einen Rohwert.
Syntax
Die Syntax lautet wie folgt:
HEXTORAW(char)
Wobei char
kann einer der CHAR
sein , VARCHAR2
, NCHAR
, oder NVARCHAR2
Datentypen.
Beispiel
Hier ist ein Beispiel:
SELECT HEXTORAW('74a5cfe') FROM DUAL;
Ergebnis:
074A5CFE
Wir können den DUMP()
verwenden Funktion, um den Datentyp des Rückgabewerts herauszufinden:
SELECT DUMP(HEXTORAW('74a5cfe')) FROM DUAL;
Ergebnis:
Typ=23 Len=4: 7,74,92,254
Der Typ=23
sagt uns, dass der Rückgabewert vom Typ 23 ist, was die Typ-ID für RAW
ist .
Nur um es klarzustellen, hier ist ein Beispiel, das die hexadezimale Zeichenfolge und den Rohwert vergleicht:
SELECT
DUMP('123') AS "r1",
DUMP(HEXTORAW('123')) AS "r2"
FROM DUAL;
Ergebnis:
r1 r2 _________________________ _____________________ Typ=96 Len=3: 49,50,51 Typ=23 Len=2: 1,35
Der Hexadezimalwert ist vom Typ 96, was die Typ-ID für CHAR
ist und NCHAR
.
Nicht-Hex-Zeichen
Das Übergeben eines Werts, der kein Hexadezimalwert ist, führt zu einem Fehler.
Beispiel:
SELECT HEXTORAW('z') FROM DUAL;
Ergebnis:
Error report - ORA-01465: invalid hex number
Null-Argument
Wenn das Argument null
ist , ist das Ergebnis null
:
SET NULL 'null';
SELECT HEXTORAW(null)
FROM DUAL;
Ergebnis:
null
Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn als Ergebnis eines SQL-SELECT
ein Nullwert auftritt Aussage.
Sie können jedoch SET NULL
verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null
zurückgegeben werden soll.
Ungültige Argumentanzahl
Aufruf von HEXTORAW()
ohne Argumente führt zu einem Fehler:
SELECT HEXTORAW()
FROM DUAL;
Ergebnis:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Und das Übergeben zu vieler Argumente führt ebenfalls zu einem Fehler:
SELECT HEXTORAW('a', 'b')
FROM DUAL;
Ergebnis:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"