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