Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách hàm UNHEX () hoạt động trong MySQL

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 4D2 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).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách đặt ngôn ngữ cho kết nối hiện tại trong MySQL

  2. Cách thay đổi kích thước cột trong MySQL

  3. MySQL DATEDIFF () so với TIMESTAMPDIFF ():Sự khác biệt là gì?

  4. Hiểu các chế độ xem trong SQL

  5. Tại sao chỉ có thể có một cột TIMESTAMP với CURRENT_TIMESTAMP trong mệnh đề DEFAULT?