В MariaDB, HEX()
е вградена низова функция, която връща шестнадесетично низово представяне на своя аргумент.
Работи така:
- Ако аргументът му е число,
HEX()
връща низово представяне на шестнадесетичната стойност на числото. - Ако аргументът е низ,
HEX()
връща шестнадесетично низово представяне на низа, където всеки байт от всеки знак в низа се преобразува в две шестнадесетични цифри. - Започвайки от MariaDB 10.5.0,
HEX()
сINET6
Аргументът връща шестнадесетично представяне на основния 16-байтов двоичен низ.
Синтаксис
Синтаксисът е така:
HEX(N_or_S)
Където N_or_S
е число или низ.
Пример
Ето един основен пример:
SELECT HEX(15);
Резултат:
+---------+ | HEX(15) | +---------+ | F | +---------+
Тук получаваме шестнадесетичната стойност на 15
, което е F
.
В десетичната запетая преброяването ще става така:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
Но в шестнадесетичен, това е така:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Така че, ако нашето число беше между 0 и 9, щяхме да получим същата стойност като неговия десетичен аналог.
Ето още един пример, който демонстрира как шестнадесетичната система увеличава стойностите си:
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);
Резултат (с помощта на вертикален изход):
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
Стрингове
Както споменахме, ако аргументът е низ, HEX()
връща шестнадесетично низово представяне на низа, където всеки байт от всеки знак в низа се преобразува в две шестнадесетични цифри.
Пример:
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');
Резултат (с помощта на вертикален изход):
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
Започвайки от MariaDB 10.5.0, HEX()
с INET6
Аргументът връща шестнадесетично представяне на основния 16-байтов двоичен низ.
Пример:
SELECT HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6));
Резултат:
+---------------------------------------------------------------+ | HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6)) | +---------------------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------------------+
Ето го отново, но използвайки съкратената форма на същия IPv6 адрес:
SELECT HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6));
Резултат:
+---------------------------------------------------+ | HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6)) | +---------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------+
Нулеви аргументи
Предаването на null
към HEX()
води до null
:
SELECT HEX(null);
Резултат:
+-----------+ | HEX(null) | +-----------+ | NULL | +-----------+
Не се предават аргументи
Извикване на HEX()
без подаване на аргументи води до грешка:
SELECT HEX();
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'HEX'