sql >> Database >  >> RDS >> Oracle

HEXTORAW() Functie in Oracle

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"

  1. Oracle SQL - Hoe de hoogste 5 waarden van een kolom op te halen

  2. Hoe UTC_DATE() werkt in MariaDB

  3. PostgreSQL gecomprimeerde archieflogboeken in Windows

  4. Hoe maak je een MySQL hiërarchische recursieve query?