Trong MariaDB, HEX()
là một hàm chuỗi tích hợp trả về biểu diễn chuỗi thập lục phân cho đối số của nó.
Nó hoạt động như thế này:
- Nếu đối số của nó là một số,
HEX()
trả về một biểu diễn chuỗi của giá trị thập lục phân của số. - Nếu đối số là một chuỗi,
HEX()
trả về biểu thị chuỗi thập lục phân của chuỗi, trong đó mỗi byte của mỗi ký tự trong chuỗi được chuyển đổi thành hai chữ số thập lục phân. - Bắt đầu trong MariaDB 10.5.0,
HEX()
vớiINET6
đối số trả về một biểu diễn thập lục phân của chuỗi nhị phân 16 byte bên dưới.
Cú pháp
Cú pháp như sau:
HEX(N_or_S)
Nơi N_or_S
là một số hoặc một chuỗi.
Ví dụ
Đây là một ví dụ cơ bản:
SELECT HEX(15);
Kết quả:
+---------+ | HEX(15) | +---------+ | F | +---------+
Ở đây, chúng tôi nhận được giá trị thập lục phân của 15
, là F
.
Trong số thập phân, phép đếm sẽ như sau:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
Nhưng trong hệ thập lục phân, nó diễn ra như thế này:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Vì vậy, nếu số của chúng tôi nằm trong khoảng từ 0 đến 9, chúng tôi sẽ có cùng giá trị với phần thập phân của nó.
Dưới đây là một ví dụ khác chứng minh cách hệ thống thập lục phân tăng các giá trị của nó:
SELECT
HEX(0),
HEX(1),
HEX(2),
HEX(3),
HEX(4),
HEX(5),
HEX(6),
HEX(7),
HEX(8),
HEX(9),
HEX(10),
HEX(11),
HEX(12),
HEX(13),
HEX(14),
HEX(15),
HEX(16),
HEX(17),
HEX(18),
HEX(19),
HEX(20),
HEX(21),
HEX(22),
HEX(23),
HEX(24),
HEX(25),
HEX(26),
HEX(27),
HEX(28),
HEX(29),
HEX(30),
HEX(31),
HEX(32),
HEX(789456768);
Kết quả (sử dụng đầu ra dọc):
HEX(0): 0 HEX(1): 1 HEX(2): 2 HEX(3): 3 HEX(4): 4 HEX(5): 5 HEX(6): 6 HEX(7): 7 HEX(8): 8 HEX(9): 9 HEX(10): A HEX(11): B HEX(12): C HEX(13): D HEX(14): E HEX(15): F HEX(16): 10 HEX(17): 11 HEX(18): 12 HEX(19): 13 HEX(20): 14 HEX(21): 15 HEX(22): 16 HEX(23): 17 HEX(24): 18 HEX(25): 19 HEX(26): 1A HEX(27): 1B HEX(28): 1C HEX(29): 1D HEX(30): 1E HEX(31): 1F HEX(32): 20 HEX(789456768): 2F0E2780
Chuỗi
Như đã đề cập, nếu đối số là một chuỗi, HEX()
trả về biểu thị chuỗi thập lục phân của chuỗi, trong đó mỗi byte của mỗi ký tự trong chuỗi được chuyển đổi thành hai chữ số thập lục phân.
Ví dụ:
SELECT
HEX('a'),
HEX('aa'),
HEX('A'),
HEX('AA'),
HEX('b'),
HEX('bb'),
HEX('B'),
HEX('BB'),
HEX('Cat'),
HEX('Dog'),
HEX('Paws & Claws'),
HEX('Zebra');
Kết quả (sử dụng đầu ra dọc):
HEX('a'): 61 HEX('aa'): 6161 HEX('A'): 41 HEX('AA'): 4141 HEX('b'): 62 HEX('bb'): 6262 HEX('B'): 42 HEX('BB'): 4242 HEX('Cat'): 436174 HEX('Dog'): 446F67 HEX('Paws & Claws'): 50617773202620436C617773 HEX('Zebra'): 5A65627261
INET6
Bắt đầu trong MariaDB 10.5.0, HEX()
với INET6
đối số trả về một biểu diễn thập lục phân của chuỗi nhị phân 16 byte bên dưới.
Ví dụ:
SELECT HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6));
Kết quả:
+---------------------------------------------------------------+ | HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6)) | +---------------------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------------------+
Đây là một lần nữa, nhưng sử dụng dạng viết tắt của cùng một địa chỉ IPv6:
SELECT HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6));
Kết quả:
+---------------------------------------------------+ | HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6)) | +---------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------+
Đối số rỗng
Chuyển null
thành HEX()
kết quả là null
:
SELECT HEX(null);
Kết quả:
+-----------+ | HEX(null) | +-----------+ | NULL | +-----------+
Không tranh luận
Đang gọi HEX()
mà không chuyển bất kỳ đối số nào dẫn đến lỗi:
SELECT HEX();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'HEX'