I MariaDB, HEX()
er en indbygget strengfunktion, der returnerer en hexadecimal strengrepræsentation af dets argument.
Det fungerer sådan her:
- Hvis argumentet er et tal,
HEX()
returnerer en strengrepræsentation af tallets hexadecimale værdi. - Hvis argumentet er en streng,
HEX()
returnerer en hexadecimal strengrepræsentation af strengen, hvor hver byte af hvert tegn i strengen konverteres til to hexadecimale cifre. - Starter i MariaDB 10.5.0,
HEX()
med enINET6
argument returnerer en hexadecimal repræsentation af den underliggende 16-byte binære streng.
Syntaks
Syntaksen ser sådan ud:
HEX(N_or_S)
Hvor N_or_S
er et tal eller en streng.
Eksempel
Her er et grundlæggende eksempel:
SELECT HEX(15);
Resultat:
+---------+ | HEX(15) | +---------+ | F | +---------+
Her fik vi den hexadecimale værdi af 15
, som er F
.
I decimal vil optællingen gå sådan her:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
Men i hexadecimal går det sådan her:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Så hvis vores tal havde været mellem 0 og 9, ville vi have fået samme værdi som dets decimalmodstykke.
Her er et andet eksempel, der viser, hvordan det hexadecimale system øger dets værdier:
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);
Resultat (ved hjælp af lodret output):
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
Strenge
Som nævnt, hvis argumentet er en streng, HEX()
returnerer en hexadecimal strengrepræsentation af strengen, hvor hver byte af hvert tegn i strengen konverteres til to hexadecimale cifre.
Eksempel:
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');
Resultat (ved hjælp af lodret output):
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
Starter i MariaDB 10.5.0, HEX()
med en INET6
argument returnerer en hexadecimal repræsentation af den underliggende 16-byte binære streng.
Eksempel:
SELECT HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6));
Resultat:
+---------------------------------------------------------------+ | HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6)) | +---------------------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------------------+
Her er det igen, men ved at bruge den forkortede form af den samme IPv6-adresse:
SELECT HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6));
Resultat:
+---------------------------------------------------+ | HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6)) | +---------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------+
Nul-argumenter
Sender null
til HEX()
resulterer i null
:
SELECT HEX(null);
Resultat:
+-----------+ | HEX(null) | +-----------+ | NULL | +-----------+
Ikke bestået nogen argumenter
Kalder HEX()
uden at sende nogen argumenter resulterer det i en fejl:
SELECT HEX();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'HEX'