MySQL bao gồm các chức năng khác nhau có thể hỗ trợ bạn khi làm việc với các giá trị thập lục phân. Một trong những hàm rõ ràng nhất là HEX()
, cho phép bạn chuyển đổi một chuỗi thành chuỗi thập lục phân tương đương.
Tuy nhiên, có thể đôi khi bạn muốn chuyển đổi một chuỗi thập lục phân trở lại thành một chuỗi dễ đọc hơn. Đó là nội dung của bài viết này.
Dưới đây là ba cách để "làm hỏng" một chuỗi trong MySQL:
-
UNHEX()
chức năng -
X
ký hiệu thập lục phân -
0x
ký hiệu
Dưới đây là các ví dụ về từng phương pháp này.
Hàm UNHEX ()
Đây là một hàm chuỗi được xây dựng đặc biệt cho "không xử lý" một chuỗi thập lục phân.
Ví dụ:
SELECT UNHEX('4361747320616E6420646F6773');
Kết quả:
+-------------------------------------+ | UNHEX('4361747320616E6420646F6773') | +-------------------------------------+ | Cats and dogs | +-------------------------------------+
Cách UNHEX()
hoạt động là nó 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.
Ký hiệu X
Một cách thay thế để giải mã chuỗi là sử dụng X
ký hiệu.
Ví dụ:
SELECT X'4361747320616E6420646F6773';
Kết quả:
+-------------------------------+ | X'4361747320616E6420646F6773' | +-------------------------------+ | Cats and dogs | +-------------------------------+
X
ký hiệu dựa trên SQL tiêu chuẩn. Ký hiệu này không phân biệt chữ hoa chữ thường, vì vậy bạn có sử dụng chữ hoa X
hay không cũng không thành vấn đề. hoặc chữ thường. Điều này trái ngược với 0x
ký hiệu phân biệt chữ hoa chữ thường.
Lưu ý rằng X
ký hiệu yêu cầu một số chẵn các chữ số. Nếu bạn có một số lẻ các chữ số, bạn có thể đặt nó bằng một số 0 ở đầu.
Kí hiệu 0x
Và cách thứ ba để hủy một chuỗi là sử dụng 0x
ký hiệu.
Ví dụ:
SELECT 0x4361747320616E6420646F6773;
Kết quả:
+------------------------------+ | 0x4361747320616E6420646F6773 | +------------------------------+ | Cats and dogs | +------------------------------+
0x
ký hiệu dựa trên ODBC, mà các chuỗi thập lục phân thường được sử dụng để cung cấp giá trị cho các cột BLOB. Như đã đề cập, 0x
ký hiệu phân biệt chữ hoa chữ thường, vì vậy nó sẽ không hoạt động nếu bạn sử dụng chữ hoa X
.
0x
ký hiệu không hoạt động với một số lẻ các chữ số, nhưng chỉ vì nó sẽ giải thích bất kỳ số lẻ nào có số 0 đứng đầu (do đó làm cho nó chẵn).
Bỏ hộp số
Lưu ý rằng anh ấy HEX()
chức năng không hoạt động trên số. Để làm điều đó, hãy sử dụng CONV()
thay vào đó là hàm (xem Cách gỡ bỏ một số trong MySQL).