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 eenINET6argument 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'