MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como HEX() funciona no MariaDB


No MariaDB, HEX() é uma função de string interna que retorna uma representação de string hexadecimal de seu argumento.

Funciona assim:
  • Se o argumento for um número, HEX() retorna uma representação de string do valor hexadecimal do número.
  • Se o argumento for uma string, HEX() retorna uma representação de string hexadecimal da string, onde cada byte de cada caractere na string é convertido em dois dígitos hexadecimais.
  • A partir do MariaDB 10.5.0, HEX() com um INET6 O argumento retorna uma representação hexadecimal da string binária de 16 bytes subjacente.

Sintaxe


A sintaxe fica assim:
HEX(N_or_S)

Onde N_or_S é um número ou uma string.

Exemplo


Segue um exemplo básico:
SELECT HEX(15);

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

Aqui, temos o valor hexadecimal de 15 , que é F .

Em decimal, a contagem seria assim:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.

Mas em hexadecimal, fica assim:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Portanto, se nosso número estivesse entre 0 e 9, teríamos o mesmo valor que sua contraparte decimal.

Aqui está outro exemplo que demonstra como o sistema hexadecimal incrementa seus 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 saída 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

Cordas


Como mencionado, se o argumento for uma string, HEX() retorna uma representação de string hexadecimal da string, onde cada byte de cada caractere na string é convertido em dois dígitos hexadecimais.

Exemplo:
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 saída 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 do MariaDB 10.5.0, HEX() com um INET6 O argumento retorna uma representação hexadecimal da string binária de 16 bytes subjacente.

Exemplo:
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                              |
+---------------------------------------------------------------+

Aqui está novamente, mas usando a forma abreviada do mesmo endereço 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


Passando null para HEX() resulta em null :
SELECT HEX(null);

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

Não passa argumentos


Chamando HEX() sem passar nenhum argumento resulta em um erro:
SELECT HEX();

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