Trong Cơ sở dữ liệu Oracle, HEXTORAW()
hàm chuyển đổi hệ thập lục phân thành giá trị thô.
Cú pháp
Cú pháp như sau:
HEXTORAW(char)
Ở đâu char
có thể là bất kỳ CHAR
nào , VARCHAR2
, NCHAR
hoặc NVARCHAR2
kiểu dữ liệu.
Ví dụ
Đây là một ví dụ:
SELECT HEXTORAW('74a5cfe') FROM DUAL;
Kết quả:
074A5CFE
Chúng ta có thể sử dụng DUMP()
hàm để tìm ra kiểu dữ liệu của giá trị trả về:
SELECT DUMP(HEXTORAW('74a5cfe')) FROM DUAL;
Kết quả:
Typ=23 Len=4: 7,74,92,254
Typ=23
cho chúng tôi biết rằng giá trị trả về thuộc loại 23, là ID loại cho RAW
.
Nói rõ hơn, đây là một ví dụ so sánh chuỗi thập lục phân và giá trị thô:
SELECT
DUMP('123') AS "r1",
DUMP(HEXTORAW('123')) AS "r2"
FROM DUAL;
Kết quả:
r1 r2 _________________________ _____________________ Typ=96 Len=3: 49,50,51 Typ=23 Len=2: 1,35
Giá trị thập lục phân thuộc loại 96, là ID loại cho CHAR
và NCHAR
.
Các ký tự không phải Hex
Việc chuyển một giá trị không phải là giá trị thập lục phân dẫn đến lỗi.
Ví dụ:
SELECT HEXTORAW('z') FROM DUAL;
Kết quả:
Error report - ORA-01465: invalid hex number
Đối số rỗng
Nếu đối số là null
, kết quả là null
:
SET NULL 'null';
SELECT HEXTORAW(null)
FROM DUAL;
Kết quả:
null
Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào giá trị null xảy ra do một SELECT
trong SQL tuyên bố.
Tuy nhiên, bạn có thể sử dụng SET NULL
để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null
nên được trả lại.
Số lượng đối số không hợp lệ
Gọi HEXTORAW()
mà không có bất kỳ đối số nào dẫn đến lỗi:
SELECT HEXTORAW()
FROM DUAL;
Kết quả:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Và việc chuyển quá nhiều đối số cũng dẫn đến lỗi:
SELECT HEXTORAW('a', 'b')
FROM DUAL;
Kết quả:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"