MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment HEX() fonctionne dans MariaDB

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 un INET6 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)

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'