Oracle
 sql >> Datenbank >  >> RDS >> Oracle

HEXTORAW()-Funktion in Oracle

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"