Di Oracle Database, HEXTORAW()
fungsi mengonversi heksadesimal ke nilai mentah.
Sintaks
Sintaksnya seperti ini:
HEXTORAW(char)
Dimana char
dapat berupa salah satu dari CHAR
, VARCHAR2
, NCHAR
, atau NVARCHAR2
tipe data.
Contoh
Ini contohnya:
SELECT HEXTORAW('74a5cfe') FROM DUAL;
Hasil:
074A5CFE
Kita dapat menggunakan DUMP()
fungsi untuk mengetahui tipe data dari nilai kembalian:
SELECT DUMP(HEXTORAW('74a5cfe')) FROM DUAL;
Hasil:
Typ=23 Len=4: 7,74,92,254
Typ=23
memberitahu kita bahwa nilai kembalian adalah tipe 23, yang merupakan tipe ID untuk RAW
.
Untuk memperjelas, berikut adalah contoh yang membandingkan string heksadesimal dan nilai mentah:
SELECT
DUMP('123') AS "r1",
DUMP(HEXTORAW('123')) AS "r2"
FROM DUAL;
Hasil:
r1 r2 _________________________ _____________________ Typ=96 Len=3: 49,50,51 Typ=23 Len=2: 1,35
Nilai heksadesimal adalah tipe 96, yang merupakan tipe ID untuk CHAR
dan NCHAR
.
Karakter Non Hex
Melewati nilai yang bukan nilai heksadesimal akan menyebabkan kesalahan.
Contoh:
SELECT HEXTORAW('z') FROM DUAL;
Hasil:
Error report - ORA-01465: invalid hex number
Argumen Null
Jika argumennya null
, hasilnya null
:
SET NULL 'null';
SELECT HEXTORAW(null)
FROM DUAL;
Hasil:
null
Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali nilai nol muncul sebagai akibat dari SELECT
SQL pernyataan.
Namun, Anda dapat menggunakan SET NULL
untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null
harus dikembalikan.
Jumlah Argumen Tidak Valid
Memanggil HEXTORAW()
tanpa argumen apa pun menghasilkan kesalahan:
SELECT HEXTORAW()
FROM DUAL;
Hasil:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Dan meneruskan terlalu banyak argumen juga menghasilkan kesalahan:
SELECT HEXTORAW('a', 'b')
FROM DUAL;
Hasil:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"