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