I MySQL, UNHEX() funktionen låter dig "avhexa" en sträng i MySQL. Med andra ord låter den dig konvertera ett hexadecimalt värde till en läsbar sträng.
Specifikt tolkar funktionen varje teckenpar i argumentet som ett hexadecimalt tal och konverterar det till den byte som representeras av talet. Returvärdet är en binär sträng.
Syntax
Syntaxen ser ut så här:
UNHEX(str)
Där str är strängen som ska unhex.
Exempel 1 – Grundläggande användning
Här är ett grundläggande exempel:
SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed; Resultat:
+--------------+ | Unhexed | +--------------+ | Coconut palm | +--------------+
Så jag angav ett hex-värde som ett argument, och funktionen tog bort det värdet och returnerade resultatet (som är en binär sträng).
Exempel 2 – Konvertera en sträng till hexadecimal
Vi kan också göra det omvända genom att använda HEX() funktion för att konvertera strängen till ett hexadecimalt värde:
SELECT HEX('Coconut palm') AS Hexed; Resultat:
+--------------------------+ | Hexed | +--------------------------+ | 436F636F6E75742070616C6D | +--------------------------+
Därför kunde vi kapsla en funktion i den andra, och vi skulle helt enkelt få vårt argument tillbaka:
SELECT
UNHEX(HEX('Coconut palm')) AS 'Result 1',
HEX(UNHEX('436F636F6E75742070616C6D')) AS 'Result 2'; Resultat:
+--------------+--------------------------+ | Result 1 | Result 2 | +--------------+--------------------------+ | Coconut palm | 436F636F6E75742070616C6D | +--------------+--------------------------+
Exempel 3 – Ogiltiga hexadecimala tecken
Argumentet måste innehålla giltiga hexadecimala tecken. Om något av tecknen inte är giltiga hexadecken blir resultatet NULL :
SELECT
UNHEX(' '),
UNHEX('_xyz'); Resultat:
+------------+---------------+
| UNHEX(' ') | UNHEX('_xyz') |
+------------+---------------+
| NULL | NULL |
+------------+---------------+
Exempel 4 – Numeriska argument
UNHEX() Funktionen fungerar inte på hexadecimala ekvivalenter av numeriska värden.
Här är ett exempel på vad jag menar:
SELECT
HEX(1234),
UNHEX('4D2'); Resultat:
+-----------+--------------+
| HEX(1234) | UNHEX('4D2') |
+-----------+--------------+
| 4D2 | ? |
+-----------+--------------+
Ett annat sätt att visa detta är:
SELECT UNHEX(HEX(1234));
Resultat:
+------------------+ | UNHEX(HEX(1234)) | +------------------+ | ? | +------------------+
Så vad detta visar oss är att den hexadecimala motsvarigheten till 1234 är 4D2 och UNHEX() funktion kan inte hantera det värdet.
I sådana fall kan du använda CONV() funktion istället:
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 det här exemplet använder vi CONV() för att konvertera värdet från bas-16 (hexadecimal) till bas-10 (decimal).