I Oracle Database er HEXTORAW()
funktion konverterer hexadecimal til en rå værdi.
Syntaks
Syntaksen ser sådan ud:
HEXTORAW(char)
Hvor char
kan være en hvilken som helst af CHAR
, VARCHAR2
, NCHAR
eller NVARCHAR2
datatyper.
Eksempel
Her er et eksempel:
SELECT HEXTORAW('74a5cfe') FROM DUAL;
Resultat:
074A5CFE
Vi kan bruge DUMP()
funktion for at finde ud af datatypen for returværdien:
SELECT DUMP(HEXTORAW('74a5cfe')) FROM DUAL;
Resultat:
Typ=23 Len=4: 7,74,92,254
Typ=23
fortæller os, at returværdien er af type 23, som er type-id'et for RAW
.
Bare for at være klar, her er et eksempel, der sammenligner den hexadecimale streng og den rå værdi:
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
Den hexadecimale værdi er af typen 96, som er type-id'et for CHAR
og NCHAR
.
Ikke-hex-tegn
Hvis du sender en værdi, der ikke er en hexadecimal værdi, resulterer det i en fejl.
Eksempel:
SELECT HEXTORAW('z') FROM DUAL;
Resultat:
Error report - ORA-01465: invalid hex number
Nul-argument
Hvis argumentet er null
, resultatet er null
:
SET NULL 'null';
SELECT HEXTORAW(null)
FROM DUAL;
Resultat:
null
Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når der opstår en null-værdi som et resultat af en SQL SELECT
erklæring.
Du kan dog bruge SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null
skal returneres.
Ugyldigt argumentantal
Kalder HEXTORAW()
uden nogen argumenter resulterer i en fejl:
SELECT HEXTORAW()
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Og at sende for mange argumenter resulterer også i en fejl:
SELECT HEXTORAW('a', 'b')
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"