Mysql
 sql >> Database >  >> RDS >> Mysql

3 modi per "svitare" una stringa in MySQL

MySQL include varie funzioni che possono aiutarti quando lavori con valori esadecimali. Una delle funzioni più ovvie è HEX() funzione, che ti consente di convertire una stringa nel suo equivalente esadecimale.

Tuttavia, a volte potresti voler riconvertire una stringa esadecimale in una stringa più leggibile. Ecco di cosa tratta questo articolo.

Ecco tre modi per eseguire l'"unhex" di una stringa in MySQL:

  • Il UNHEX() funzione
  • Il X notazione esadecimale
  • Il 0x notazione

Di seguito sono riportati esempi di ciascuno di questi metodi.

La funzione UNHEX()

Questa è una funzione di stringa creata appositamente per "non esadecimale" una stringa esadecimale.

Esempio:

SELECT UNHEX('4361747320616E6420646F6773');

Risultato:

+-------------------------------------+
| UNHEX('4361747320616E6420646F6773') |
+-------------------------------------+
| Cats and dogs                       |
+-------------------------------------+

La via UNHEX() funziona è che interpreta ogni coppia di caratteri nell'argomento come un numero esadecimale e lo converte nel byte rappresentato dal numero. Il valore restituito è una stringa binaria.

La notazione X

Un modo alternativo per annullare l'esadecimale di una stringa consiste nell'usare la X notazione.

Esempio:

SELECT X'4361747320616E6420646F6773';

Risultato:

+-------------------------------+
| X'4361747320616E6420646F6773' |
+-------------------------------+
| Cats and dogs                 |
+-------------------------------+

La X la notazione è basata su SQL standard. Questa notazione non fa distinzione tra maiuscole e minuscole, quindi non importa se usi una X maiuscola o minuscolo. Questo è in contrasto con 0x notazione, che fa distinzione tra maiuscole e minuscole.

Nota che la X la notazione richiede un numero pari di cifre. Se hai un numero dispari di cifre, puoi riempirlo con uno zero iniziale.

La notazione 0x

E il terzo modo per annullare l'esadecimale di una stringa è usare 0x notazione.

Esempio:

SELECT 0x4361747320616E6420646F6773;

Risultato:

+------------------------------+
| 0x4361747320616E6420646F6773 |
+------------------------------+
| Cats and dogs                |
+------------------------------+

Il 0x la notazione si basa su ODBC, per cui le stringhe esadecimali vengono spesso utilizzate per fornire valori per le colonne BLOB. Come accennato, il 0x la notazione fa distinzione tra maiuscole e minuscole, quindi non funzionerà se usi una X maiuscola .

Il 0x la notazione funziona con un numero dispari di cifre, ma solo perché interpreterà qualsiasi numero dispari come avente uno zero iniziale (rendendolo così pari).

Associa un numero

Nota che HEX() la funzione non funziona sui numeri. Per farlo, usa CONV() funzione invece (vedi Come annullare l'esadecimale di un numero in MySQL).