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

3 maneiras de “deshexar” uma string no MySQL


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