I MySQL er UNHEX()
funktionen giver dig mulighed for at "fjerne" en streng i MySQL. Med andre ord giver det dig mulighed for at konvertere en hexadecimal værdi til en menneskelig læsbar streng.
Specifikt fortolker funktionen hvert par af tegn i argumentet som et hexadecimalt tal og konverterer det til den byte, der repræsenteres af tallet. Returværdien er en binær streng.
Syntaks
Syntaksen ser sådan ud:
UNHEX(str)
Hvor str
er strengen, der skal unhex.
Eksempel 1 – Grundlæggende brug
Her er et grundlæggende eksempel:
SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;
Resultat:
+--------------+ | Unhexed | +--------------+ | Coconut palm | +--------------+
Så jeg angav en hex-værdi som et argument, og funktionen fjernede denne værdi og returnerede resultatet (som er en binær streng).
Eksempel 2 – Konverter en streng til hexadecimal
Vi kan også gøre det omvendte ved at bruge HEX()
funktion til at konvertere strengen til en hexadecimal værdi:
SELECT HEX('Coconut palm') AS Hexed;
Resultat:
+--------------------------+ | Hexed | +--------------------------+ | 436F636F6E75742070616C6D | +--------------------------+
Derfor kunne vi indlejre den ene funktion i den anden, og vi ville simpelthen få vores argument tilbage:
SELECT UNHEX(HEX('Coconut palm')) AS 'Result 1', HEX(UNHEX('436F636F6E75742070616C6D')) AS 'Result 2';
Resultat:
+--------------+--------------------------+ | Result 1 | Result 2 | +--------------+--------------------------+ | Coconut palm | 436F636F6E75742070616C6D | +--------------+--------------------------+
Eksempel 3 – Ugyldige hexadecimale tegn
Argumentet skal indeholde gyldige hexadecimale tegn. Hvis nogen af tegnene ikke er gyldige hex-tegn, vil resultatet være NULL
:
SELECT UNHEX(' '), UNHEX('_xyz');
Resultat:
+------------+---------------+ | UNHEX(' ') | UNHEX('_xyz') | +------------+---------------+ | NULL | NULL | +------------+---------------+
Eksempel 4 – Numeriske argumenter
UNHEX()
Funktionen virker ikke på de hexadecimale ækvivalenter af numeriske værdier.
Her er et eksempel på, hvad jeg mener:
SELECT HEX(1234), UNHEX('4D2');
Resultat:
+-----------+--------------+ | HEX(1234) | UNHEX('4D2') | +-----------+--------------+ | 4D2 | ? | +-----------+--------------+
En anden måde at demonstrere dette på ville være:
SELECT UNHEX(HEX(1234));
Resultat:
+------------------+ | UNHEX(HEX(1234)) | +------------------+ | ? | +------------------+
Så hvad dette viser os er, at den hexadecimale ækvivalent af 1234 er 4D2 , og UNHEX()
funktion kan ikke håndtere den værdi.
I sådanne tilfælde kan du bruge CONV()
funktion i stedet:
SELECT HEX(1234), CONV('4D2', 16, 10), CONV(HEX(1234), 16, 10);
Resultat:
+-----------+---------------------+-------------------------+ | HEX(1234) | CONV('4D2', 16, 10) | CONV(HEX(1234), 16, 10) | +-----------+---------------------+-------------------------+ | 4D2 | 1234 | 1234 | +-----------+---------------------+-------------------------+
I dette eksempel bruger vi CONV()
for at konvertere værdien fra base-16 (hexadecimal) til base-10 (decimal).