Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como a função UNHEX() funciona no MySQL


No MySQL, o UNHEX() A função permite que você “deshex” uma string no MySQL. Em outras palavras, ele permite converter um valor hexadecimal em uma string legível por humanos.

Especificamente, a função interpreta cada par de caracteres no argumento como um número hexadecimal e o converte no byte representado pelo número. O valor de retorno é uma string binária.


Sintaxe


A sintaxe fica assim:
UNHEX(str)

Onde str é a string para unhex.

Exemplo 1 – Uso básico


Segue um exemplo básico:
SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;

Resultado:
+--------------+
| Unhexed      |
+--------------+
| Coconut palm |
+--------------+

Então eu forneci um valor hexadecimal como um argumento, e a função unhexed esse valor e retornou o resultado (que é uma string binária).

Exemplo 2 – Converter uma string para hexadecimal


Também podemos fazer o inverso usando o HEX() função para converter a string em um valor hexadecimal:
SELECT HEX('Coconut palm') AS Hexed;

Resultado:
+--------------------------+
| Hexed                    |
+--------------------------+
| 436F636F6E75742070616C6D |
+--------------------------+

Portanto, poderíamos aninhar uma função dentro da outra e simplesmente obteríamos nosso argumento retornado:
SELECT 
  UNHEX(HEX('Coconut palm')) AS 'Result 1',
  HEX(UNHEX('436F636F6E75742070616C6D')) AS 'Result 2';

Resultado:
+--------------+--------------------------+
| Result 1     | Result 2                 |
+--------------+--------------------------+
| Coconut palm | 436F636F6E75742070616C6D |
+--------------+--------------------------+

Exemplo 3 – Caracteres hexadecimais inválidos


O argumento deve conter caracteres hexadecimais válidos. Se algum dos caracteres não for um caractere hexadecimal válido, o resultado será NULL :
SELECT 
  UNHEX(' '),
  UNHEX('_xyz');

Resultado:
+------------+---------------+
| UNHEX(' ') | UNHEX('_xyz') |
+------------+---------------+
| NULL       | NULL          |
+------------+---------------+

Exemplo 4 – Argumentos Numéricos


O UNHEX() A função não funciona nos equivalentes hexadecimais de valores numéricos.

Aqui está um exemplo do que quero dizer:
SELECT 
  HEX(1234),
  UNHEX('4D2');

Resultado:
+-----------+--------------+
| HEX(1234) | UNHEX('4D2') |
+-----------+--------------+
| 4D2       | ?            |
+-----------+--------------+

Outra forma de demonstrar isso seria:
SELECT UNHEX(HEX(1234));

Resultado:
+------------------+
| UNHEX(HEX(1234)) |
+------------------+
| ?                |
+------------------+

Isso nos mostra que o equivalente hexadecimal de 1234 é 4D2 , e o UNHEX() função não pode lidar com esse valor.

Nesses casos, você pode usar o CONV() função em vez disso:
SELECT 
  HEX(1234),
  CONV('4D2', 16, 10),
  CONV(HEX(1234), 16, 10);

Resultado:
+-----------+---------------------+-------------------------+
| HEX(1234) | CONV('4D2', 16, 10) | CONV(HEX(1234), 16, 10) |
+-----------+---------------------+-------------------------+
| 4D2       | 1234                | 1234                    |
+-----------+---------------------+-------------------------+

Neste exemplo, usamos CONV() para converter o valor de base 16 (hexadecimal) para base 10 (decimal).