MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona HEX() in MariaDB

In MariaDB, HEX() è una funzione di stringa incorporata che restituisce una rappresentazione di stringa esadecimale del suo argomento.

Funziona così:

  • Se il suo argomento è un numero, HEX() restituisce una rappresentazione in formato stringa del valore esadecimale del numero.
  • Se l'argomento è una stringa, HEX() restituisce una rappresentazione di stringa esadecimale della stringa, in cui ogni byte di ogni carattere nella stringa viene convertito in due cifre esadecimali.
  • A partire da MariaDB 10.5.0, HEX() con un INET6 argomento restituisce una rappresentazione esadecimale della stringa binaria di 16 byte sottostante.

Sintassi

La sintassi è questa:

HEX(N_or_S)

Dove N_or_S è un numero o una stringa.

Esempio

Ecco un esempio di base:

SELECT HEX(15);

Risultato:

+---------+
| HEX(15) |
+---------+
| F       |
+---------+

Qui abbiamo il valore esadecimale di 15 , che è F .

In decimale, il conteggio sarebbe così:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.

Ma in esadecimale, è così:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Quindi, se il nostro numero fosse stato compreso tra 0 e 9, avremmo ottenuto lo stesso valore della sua controparte decimale.

Ecco un altro esempio che dimostra come il sistema esadecimale incrementa i suoi valori:

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);

Risultato (usando l'output 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

Stringhe

Come accennato, se l'argomento è una stringa, HEX() restituisce una rappresentazione di stringa esadecimale della stringa, in cui ogni byte di ogni carattere nella stringa viene convertito in due cifre esadecimali.

Esempio:

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');

Risultato (usando l'output 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

A partire da MariaDB 10.5.0, HEX() con un INET6 argomento restituisce una rappresentazione esadecimale della stringa binaria di 16 byte sottostante.

Esempio:

SELECT HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6));

Risultato:

+---------------------------------------------------------------+
| HEX(CAST('2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' AS INET6)) |
+---------------------------------------------------------------+
| 20010DB83C4D0015000000001A2F1A2B                              |
+---------------------------------------------------------------+

Eccolo di nuovo, ma utilizzando la forma abbreviata dello stesso indirizzo IPv6:

SELECT HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6));

Risultato:

+---------------------------------------------------+
| HEX(CAST('2001:db8:3c4d:15::1a2f:1a2b' AS INET6)) |
+---------------------------------------------------+
| 20010DB83C4D0015000000001A2F1A2B                  |
+---------------------------------------------------+

Argomenti nulli

Passaggio null a HEX() risulta null :

SELECT HEX(null);

Risultato:

+-----------+
| HEX(null) |
+-----------+
| NULL      |
+-----------+

Nessun argomento superato

Chiamando HEX() senza passare alcun argomento genera un errore:

SELECT HEX();

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'HEX'