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
X
notação hexadecimal - O
0x
notaçã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).