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

Come funziona la funzione UNHEX() in MySQL

In MySQL, il UNHEX() La funzione ti consente di "unhex" una stringa in MySQL. In altre parole, ti permette di convertire un valore esadecimale in una stringa leggibile dall'uomo.

In particolare, la funzione 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.

Sintassi

La sintassi è questa:

UNHEX(str)

Dove str è la stringa da unhex.

Esempio 1 – Utilizzo di base

Ecco un esempio di base:

SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;

Risultato:

+--------------+
| Unhexed      |
+--------------+
| Coconut palm |
+--------------+

Quindi ho fornito un valore esadecimale come argomento e la funzione ha annullato quel valore e ha restituito il risultato (che è una stringa binaria).

Esempio 2:convertire una stringa in esadecimale

Possiamo anche fare il contrario usando HEX() funzione per convertire la stringa in un valore esadecimale:

SELECT HEX('Coconut palm') AS Hexed;

Risultato:

+--------------------------+
| Hexed                    |
+--------------------------+
| 436F636F6E75742070616C6D |
+--------------------------+

Pertanto, potremmo annidare una funzione nell'altra e otterremmo semplicemente il nostro argomento restituito:

SELECT 
  UNHEX(HEX('Coconut palm')) AS 'Result 1',
  HEX(UNHEX('436F636F6E75742070616C6D')) AS 'Result 2';

Risultato:

+--------------+--------------------------+
| Result 1     | Result 2                 |
+--------------+--------------------------+
| Coconut palm | 436F636F6E75742070616C6D |
+--------------+--------------------------+

Esempio 3 – Caratteri esadecimali non validi

L'argomento deve contenere caratteri esadecimali validi. Se uno qualsiasi dei caratteri non è un carattere esadecimale valido, il risultato sarà NULL :

SELECT 
  UNHEX(' '),
  UNHEX('_xyz');

Risultato:

+------------+---------------+
| UNHEX(' ') | UNHEX('_xyz') |
+------------+---------------+
| NULL       | NULL          |
+------------+---------------+

Esempio 4 – Argomenti numerici

Il UNHEX() La funzione non funziona sugli equivalenti esadecimali dei valori numerici.

Ecco un esempio di cosa intendo:

SELECT 
  HEX(1234),
  UNHEX('4D2');

Risultato:

+-----------+--------------+
| HEX(1234) | UNHEX('4D2') |
+-----------+--------------+
| 4D2       | ?            |
+-----------+--------------+

Un altro modo per dimostrarlo sarebbe:

SELECT UNHEX(HEX(1234));

Risultato:

+------------------+
| UNHEX(HEX(1234)) |
+------------------+
| ?                |
+------------------+

Quindi ciò che questo ci mostra è che l'equivalente esadecimale di 1234 è 4D2 e il UNHEX() la funzione non può gestire quel valore.

In questi casi, puoi usare CONV() funzione invece:

SELECT 
  HEX(1234),
  CONV('4D2', 16, 10),
  CONV(HEX(1234), 16, 10);

Risultato:

+-----------+---------------------+-------------------------+
| HEX(1234) | CONV('4D2', 16, 10) | CONV(HEX(1234), 16, 10) |
+-----------+---------------------+-------------------------+
| 4D2       | 1234                | 1234                    |
+-----------+---------------------+-------------------------+

In questo esempio, utilizziamo CONV() per convertire il valore da base-16 (esadecimale) a base-10 (decimale).