sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona HEX() en MariaDB

En MariaDB, HEX() es una función de cadena incorporada que devuelve una representación de cadena hexadecimal de su argumento.

Funciona así:

  • Si su argumento es un número, HEX() devuelve una representación de cadena del valor hexadecimal del número.
  • Si el argumento es una cadena, HEX() devuelve una representación de cadena hexadecimal de la cadena, donde cada byte de cada carácter de la cadena se convierte en dos dígitos hexadecimales.
  • A partir de MariaDB 10.5.0, HEX() con un INET6 El argumento devuelve una representación hexadecimal de la cadena binaria subyacente de 16 bytes.

Sintaxis

La sintaxis es así:

HEX(N_or_S)

Donde N_or_S es un número o una cadena.

Ejemplo

He aquí un ejemplo básico:

SELECT HEX(15);

Resultado:

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

Aquí, obtuvimos el valor hexadecimal de 15 , que es F .

En decimal, el conteo sería así:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.

Pero en hexadecimal, es así:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Entonces, si nuestro número hubiera estado entre 0 y 9, habríamos obtenido el mismo valor que su equivalente decimal.

Aquí hay otro ejemplo que demuestra cómo el sistema hexadecimal incrementa sus valores:

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

Resultado (usando salida vertical):

        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

Cuerdas

Como se mencionó, si el argumento es una cadena, HEX() devuelve una representación de cadena hexadecimal de la cadena, donde cada byte de cada carácter de la cadena se convierte en dos dígitos hexadecimales.

Ejemplo:

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

Resultado (usando salida vertical):

           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 partir de MariaDB 10.5.0, HEX() con un INET6 El argumento devuelve una representación hexadecimal de la cadena binaria subyacente de 16 bytes.

Ejemplo:

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

Resultado:

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

Aquí está de nuevo, pero usando la forma abreviada de la misma dirección IPv6:

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

Resultado:

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

Argumentos nulos

Pasando null a HEX() da como resultado null :

SELECT HEX(null);

Resultado:

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

Pasar Sin Argumentos

Llamando a HEX() sin pasar ningún argumento da como resultado un error:

SELECT HEX();

Resultado:

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