W bazie danych Oracle HEXTORAW()
funkcja konwertuje wartość szesnastkową na wartość surową.
Składnia
Składnia wygląda tak:
HEXTORAW(char)
Gdzie char
może być dowolnym z CHAR
, VARCHAR2
, NCHAR
lub NVARCHAR2
typy danych.
Przykład
Oto przykład:
SELECT HEXTORAW('74a5cfe') FROM DUAL;
Wynik:
074A5CFE
Możemy użyć DUMP()
funkcja do sprawdzenia typu danych zwracanej wartości:
SELECT DUMP(HEXTORAW('74a5cfe')) FROM DUAL;
Wynik:
Typ=23 Len=4: 7,74,92,254
Typ=23
mówi nam, że zwracana wartość jest typu 23, który jest identyfikatorem typu dla RAW
.
Dla jasności, oto przykład porównujący ciąg szesnastkowy i surową wartość:
SELECT
DUMP('123') AS "r1",
DUMP(HEXTORAW('123')) AS "r2"
FROM DUAL;
Wynik:
r1 r2 _________________________ _____________________ Typ=96 Len=3: 49,50,51 Typ=23 Len=2: 1,35
Wartość szesnastkowa jest typu 96, który jest identyfikatorem typu dla CHAR
i NCHAR
.
Znaki inne niż szesnastkowe
Przekazanie wartości, która nie jest wartością szesnastkową, skutkuje błędem.
Przykład:
SELECT HEXTORAW('z') FROM DUAL;
Wynik:
Error report - ORA-01465: invalid hex number
Argument zerowy
Jeśli argument jest null
, wynik to null
:
SET NULL 'null';
SELECT HEXTORAW(null)
FROM DUAL;
Wynik:
null
Domyślnie SQLcl i SQL*Plus zwracają pustą spację za każdym razem, gdy w wyniku SELECT
wystąpi wartość null oświadczenie.
Możesz jednak użyć SET NULL
aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null
należy zwrócić.
Nieprawidłowa liczba argumentów
Wywołanie HEXTORAW()
bez żadnych argumentów powoduje błąd:
SELECT HEXTORAW()
FROM DUAL;
Wynik:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Przekazywanie zbyt wielu argumentów również skutkuje błędem:
SELECT HEXTORAW('a', 'b')
FROM DUAL;
Wynik:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"