V MariaDB, HEX()
je vestavěná řetězcová funkce, která vrací hexadecimální řetězec reprezentace svého argumentu.
Funguje to takto:
- Pokud je jeho argumentem číslo,
HEX()
vrátí řetězcovou reprezentaci hexadecimální hodnoty čísla. - Pokud je argumentem řetězec,
HEX()
vrací hexadecimální reprezentaci řetězce, kde je každý bajt každého znaku v řetězci převeden na dvě hexadecimální číslice. - Počínaje MariaDB 10.5.0,
HEX()
sINET6
argument vrací hexadecimální reprezentaci základního 16bajtového binárního řetězce.
Syntaxe
Syntaxe vypadá takto:
HEX(N_or_S)
Kde N_or_S
je číslo nebo řetězec.
Příklad
Zde je základní příklad:
SELECT HEX(15);
Výsledek:
+---------+ | HEX(15) | +---------+ | F | +---------+
Zde jsme dostali hexadecimální hodnotu 15
, což je F
.
V desítkové soustavě by počítání probíhalo takto:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
Ale v šestnáctkové soustavě to vypadá takto:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Pokud by tedy naše číslo bylo mezi 0 a 9, dostali bychom stejnou hodnotu jako jeho desetinný protějšek.
Zde je další příklad, který ukazuje, jak hexadecimální systém zvyšuje své hodnoty:
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);
Výsledek (při použití vertikálního výstupu):
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
Řetězce
Jak již bylo zmíněno, pokud je argumentem řetězec, HEX()
vrací hexadecimální reprezentaci řetězce, kde je každý bajt každého znaku v řetězci převeden na dvě hexadecimální číslice.
Příklad:
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');
Výsledek (při použití vertikálního výstupu):
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
Počínaje MariaDB 10.5.0, HEX()
s INET6
argument vrací hexadecimální reprezentaci základního 16bajtového binárního řetězce.
Příklad:
SELECT HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6));
Výsledek:
+---------------------------------------------------------------+ | HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6)) | +---------------------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------------------+
Tady je to znovu, ale ve zkrácené podobě stejné IPv6 adresy:
SELECT HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6));
Výsledek:
+---------------------------------------------------+ | HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6)) | +---------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------+
Nulové argumenty
Předávání null
na HEX()
výsledkem je null
:
SELECT HEX(null);
Výsledek:
+-----------+ | HEX(null) | +-----------+ | NULL | +-----------+
Nepředávání žádných argumentů
Volání HEX()
bez předání jakýchkoli argumentů dojde k chybě:
SELECT HEX();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'HEX'