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()sINET6argument 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'