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