In MariaDB, HEX()
is een ingebouwde tekenreeksfunctie die een hexadecimale tekenreeksrepresentatie van zijn argument teruggeeft.
Het werkt als volgt:
- Als het argument een getal is,
HEX()
retourneert een tekenreeksrepresentatie van de hexadecimale waarde van het getal. - Als het argument een string is,
HEX()
retourneert een hexadecimale tekenreeksrepresentatie van de tekenreeks, waarbij elke byte van elk teken in de tekenreeks wordt geconverteerd naar twee hexadecimale cijfers. - Vanaf MariaDB 10.5.0,
HEX()
met eenINET6
argument retourneert een hexadecimale representatie van de onderliggende 16-byte binaire string.
Syntaxis
De syntaxis gaat als volgt:
HEX(N_or_S)
Waar N_or_S
is een getal of een tekenreeks.
Voorbeeld
Hier is een eenvoudig voorbeeld:
SELECT HEX(15);
Resultaat:
+---------+ | HEX(15) | +---------+ | F | +---------+
Hier hebben we de hexadecimale waarde van 15
, dat is F
.
In decimalen zou het tellen als volgt gaan:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
Maar in hexadecimaal gaat het als volgt:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Dus als ons getal tussen 0 en 9 was geweest, zouden we dezelfde waarde hebben gekregen als zijn decimale tegenhanger.
Hier is nog een voorbeeld dat laat zien hoe het hexadecimale systeem zijn waarden verhoogt:
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);
Resultaat (met verticale uitvoer):
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
Snaren
Zoals gezegd, als het argument een string is, HEX()
retourneert een hexadecimale tekenreeksrepresentatie van de tekenreeks, waarbij elke byte van elk teken in de tekenreeks wordt geconverteerd naar twee hexadecimale cijfers.
Voorbeeld:
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');
Resultaat (met verticale uitvoer):
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
Vanaf MariaDB 10.5.0, HEX()
met een INET6
argument retourneert een hexadecimale representatie van de onderliggende 16-byte binaire string.
Voorbeeld:
SELECT HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6));
Resultaat:
+---------------------------------------------------------------+ | HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6)) | +---------------------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------------------+
Hier is het weer, maar in de verkorte vorm van hetzelfde IPv6-adres:
SELECT HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6));
Resultaat:
+---------------------------------------------------+ | HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6)) | +---------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------+
Nullargumenten
Doorgeven van null
naar HEX()
resulteert in null
:
SELECT HEX(null);
Resultaat:
+-----------+ | HEX(null) | +-----------+ | NULL | +-----------+
Geen argumenten doorgeven
Aanroepen van HEX()
zonder het doorgeven van argumenten resulteert in een fout:
SELECT HEX();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'HEX'