Dans MariaDB, HEX()
est une fonction de chaîne intégrée qui renvoie une représentation sous forme de chaîne hexadécimale de son argument.
Cela fonctionne comme ceci :
- Si son argument est un nombre,
HEX()
renvoie une représentation sous forme de chaîne de la valeur hexadécimale du nombre. - Si l'argument est une chaîne,
HEX()
renvoie une représentation sous forme de chaîne hexadécimale de la chaîne, où chaque octet de chaque caractère de la chaîne est converti en deux chiffres hexadécimaux. - À partir de MariaDB 10.5.0,
HEX()
avec unINET6
L'argument renvoie une représentation hexadécimale de la chaîne binaire sous-jacente de 16 octets.
Syntaxe
La syntaxe ressemble à ceci :
HEX(N_or_S)
Où N_or_S
est un nombre ou une chaîne.
Exemple
Voici un exemple de base :
SELECT HEX(15);
Résultat :
+---------+ | HEX(15) | +---------+ | F | +---------+
Ici, nous avons obtenu la valeur hexadécimale de 15
, qui est F
.
En décimal, le décompte serait le suivant :0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
Mais en hexadécimal, ça donne ça :0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Donc, si notre nombre avait été compris entre 0 et 9, nous aurions obtenu la même valeur que son homologue décimal.
Voici un autre exemple qui montre comment le système hexadécimal incrémente ses valeurs :
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);
Résultat (en utilisant la sortie verticale) :
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
Chaînes
Comme mentionné, si l'argument est une chaîne, HEX()
renvoie une représentation sous forme de chaîne hexadécimale de la chaîne, où chaque octet de chaque caractère de la chaîne est converti en deux chiffres hexadécimaux.
Exemple :
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');
Résultat (en utilisant la sortie verticale) :
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
À partir de MariaDB 10.5.0, HEX()
avec un INET6
L'argument renvoie une représentation hexadécimale de la chaîne binaire sous-jacente de 16 octets.
Exemple :
SELECT HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6));
Résultat :
+---------------------------------------------------------------+ | HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6)) | +---------------------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------------------+
La voici à nouveau, mais en utilisant la forme abrégée de la même adresse IPv6 :
SELECT HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6));
Résultat :
+---------------------------------------------------+ | HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6)) | +---------------------------------------------------+ | 20010DB83C4D0015000000001A2F1A2B | +---------------------------------------------------+
Arguments nuls
Passer null
à HEX()
donne null
:
SELECT HEX(null);
Résultat :
+-----------+ | HEX(null) | +-----------+ | NULL | +-----------+
Passer aucun argument
Appel de HEX()
sans passer d'arguments entraîne une erreur :
SELECT HEX();
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'HEX'