Trong MySQL, UNHEX()
hàm cho phép bạn “làm hỏng” một chuỗi trong MySQL. Nói cách khác, nó cho phép bạn chuyển đổi một giá trị thập lục phân thành một chuỗi mà con người có thể đọc được.
Cụ thể, hàm diễn giải từng cặp ký tự trong đối số dưới dạng số thập lục phân và chuyển nó thành byte được đại diện bởi số. Giá trị trả về là một chuỗi nhị phân.
Cú pháp
Cú pháp như sau:
UNHEX(str)
Ở đâu str
là chuỗi không tồn tại.
Ví dụ 1 - Cách sử dụng cơ bản
Đây là một ví dụ cơ bản:
SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;
Kết quả:
+--------------+ | Unhexed | +--------------+ | Coconut palm | +--------------+
Vì vậy, tôi đã cung cấp một giá trị hex làm đối số và hàm đã xử lý giá trị đó và trả về kết quả (là một chuỗi nhị phân).
Ví dụ 2 - Chuyển đổi một chuỗi thành hệ thập lục phân
Chúng ta cũng có thể làm ngược lại bằng cách sử dụng HEX()
hàm chuyển đổi chuỗi thành giá trị thập lục phân:
SELECT HEX('Coconut palm') AS Hexed;
Kết quả:
+--------------------------+ | Hexed | +--------------------------+ | 436F636F6E75742070616C6D | +--------------------------+
Do đó, chúng ta có thể lồng một hàm vào hàm kia và chúng ta chỉ cần trả về đối số của chúng ta:
SELECT UNHEX(HEX('Coconut palm')) AS 'Result 1', HEX(UNHEX('436F636F6E75742070616C6D')) AS 'Result 2';
Kết quả:
+--------------+--------------------------+ | Result 1 | Result 2 | +--------------+--------------------------+ | Coconut palm | 436F636F6E75742070616C6D | +--------------+--------------------------+
Ví dụ 3 - Các ký tự thập lục phân không hợp lệ
Đối số phải chứa các ký tự thập lục phân hợp lệ. Nếu bất kỳ ký tự nào không phải là ký tự hex hợp lệ, kết quả sẽ là NULL
:
SELECT UNHEX(' '), UNHEX('_xyz');
Kết quả:
+------------+---------------+ | UNHEX(' ') | UNHEX('_xyz') | +------------+---------------+ | NULL | NULL | +------------+---------------+
Ví dụ 4 - Đối số dạng số
UNHEX()
hàm không hoạt động trên các giá trị số tương đương với hệ thập lục phân.
Đây là một ví dụ về ý tôi muốn nói:
SELECT HEX(1234), UNHEX('4D2');
Kết quả:
+-----------+--------------+ | HEX(1234) | UNHEX('4D2') | +-----------+--------------+ | 4D2 | ? | +-----------+--------------+
Một cách khác để chứng minh điều này sẽ là:
SELECT UNHEX(HEX(1234));
Kết quả:
+------------------+ | UNHEX(HEX(1234)) | +------------------+ | ? | +------------------+
Vì vậy, điều này cho chúng ta thấy là hệ thập lục phân tương đương với 1234 là 4D2 và UNHEX()
hàm không thể xử lý giá trị đó.
Trong những trường hợp như vậy, bạn có thể sử dụng CONV()
chức năng thay thế:
SELECT HEX(1234), CONV('4D2', 16, 10), CONV(HEX(1234), 16, 10);
Kết quả:
+-----------+---------------------+-------------------------+ | HEX(1234) | CONV('4D2', 16, 10) | CONV(HEX(1234), 16, 10) | +-----------+---------------------+-------------------------+ | 4D2 | 1234 | 1234 | +-----------+---------------------+-------------------------+
Trong ví dụ này, chúng tôi sử dụng CONV()
để chuyển đổi giá trị từ cơ số 16 (thập lục phân) sang cơ số 10 (thập phân).