O MySQL inclui várias funções que podem ajudá-lo ao trabalhar com valores hexadecimais. Uma das funções mais óbvias é o
HEX() função, que permite converter uma string em seu equivalente hexadecimal. No entanto, pode haver momentos em que você deseja converter uma string hexadecimal de volta em uma string mais legível. É disso que trata este artigo.
Aqui estão três maneiras de “deshexar” uma string no MySQL:
- O
UNHEX()função - O
Xnotação hexadecimal - O
0xnotação
Abaixo estão exemplos de cada um desses métodos.
A função UNHEX()
Esta é uma função de string criada especificamente para “deshexar” uma string hexadecimal.
Exemplo:
SELECT UNHEX('4361747320616E6420646F6773'); Resultado:
+-------------------------------------+
| UNHEX('4361747320616E6420646F6773') |
+-------------------------------------+
| Cats and dogs |
+-------------------------------------+ A forma como
UNHEX() funciona é que ele 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. A notação X
Uma maneira alternativa de deshexar uma string é usar o
X notação. Exemplo:
SELECT X'4361747320616E6420646F6773';
Resultado:
+-------------------------------+ | X'4361747320616E6420646F6773' | +-------------------------------+ | Cats and dogs | +-------------------------------+
O
X notação é baseada em SQL padrão. Essa notação não diferencia maiúsculas de minúsculas, portanto, não importa se você usa um X maiúsculo ou minúsculas. Isso contrasta com o 0x notação, que faz distinção entre maiúsculas e minúsculas. Observe que o
X notação requer um número par de dígitos. Se você tiver um número ímpar de dígitos, poderá preenchê-lo com um zero à esquerda. A notação 0x
E a terceira maneira de deshexar uma string é usar o
0x notação. Exemplo:
SELECT 0x4361747320616E6420646F6773;
Resultado:
+------------------------------+ | 0x4361747320616E6420646F6773 | +------------------------------+ | Cats and dogs | +------------------------------+
O
0x A notação é baseada em ODBC, para a qual strings hexadecimais são frequentemente usadas para fornecer valores para colunas BLOB. Como mencionado, o 0x notação diferencia maiúsculas de minúsculas, portanto, não funcionará se você usar um X maiúsculo . O
0x A notação funciona com um número ímpar de dígitos, mas apenas porque interpretará qualquer número ímpar como tendo um zero à esquerda (tornando-o par). Deshexar um número
Observe que ele
HEX() função não funciona em números. Para fazer isso, use o CONV() em vez disso (veja Como deshexar um número no MySQL).