In MySQL is de UNHEX()
Met deze functie kunt u een string "unhexen" in MySQL. Met andere woorden, het stelt je in staat om een hexadecimale waarde om te zetten in een door mensen leesbare string.
In het bijzonder interpreteert de functie elk paar tekens in het argument als een hexadecimaal getal en converteert het naar de byte die door het getal wordt vertegenwoordigd. De geretourneerde waarde is een binaire tekenreeks.
Syntaxis
De syntaxis gaat als volgt:
UNHEX(str)
Waar str
is de tekenreeks die u moet unhexen.
Voorbeeld 1 – Basisgebruik
Hier is een eenvoudig voorbeeld:
SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;
Resultaat:
+--------------+ | Unhexed | +--------------+ | Coconut palm | +--------------+
Dus ik heb een hexadecimale waarde als argument gegeven, en de functie heeft die waarde unhexed en het resultaat geretourneerd (wat een binaire tekenreeks is).
Voorbeeld 2 – Converteer een string naar hexadecimaal
We kunnen ook het omgekeerde doen door de HEX()
. te gebruiken functie om de string om te zetten in een hexadecimale waarde:
SELECT HEX('Coconut palm') AS Hexed;
Resultaat:
+--------------------------+ | Hexed | +--------------------------+ | 436F636F6E75742070616C6D | +--------------------------+
Daarom zouden we de ene functie in de andere kunnen nesten, en we zouden gewoon ons argument terugkrijgen:
SELECT UNHEX(HEX('Coconut palm')) AS 'Result 1', HEX(UNHEX('436F636F6E75742070616C6D')) AS 'Result 2';
Resultaat:
+--------------+--------------------------+ | Result 1 | Result 2 | +--------------+--------------------------+ | Coconut palm | 436F636F6E75742070616C6D | +--------------+--------------------------+
Voorbeeld 3 – Ongeldige hexadecimale tekens
Het argument moet geldige hexadecimale tekens bevatten. Als een van de tekens geen geldige hexadecimale tekens zijn, is het resultaat NULL
:
SELECT UNHEX(' '), UNHEX('_xyz');
Resultaat:
+------------+---------------+ | UNHEX(' ') | UNHEX('_xyz') | +------------+---------------+ | NULL | NULL | +------------+---------------+
Voorbeeld 4 – Numerieke argumenten
De UNHEX()
functie werkt niet op de hexadecimale equivalenten van numerieke waarden.
Hier is een voorbeeld van wat ik bedoel:
SELECT HEX(1234), UNHEX('4D2');
Resultaat:
+-----------+--------------+ | HEX(1234) | UNHEX('4D2') | +-----------+--------------+ | 4D2 | ? | +-----------+--------------+
Een andere manier om dit aan te tonen zou zijn:
SELECT UNHEX(HEX(1234));
Resultaat:
+------------------+ | UNHEX(HEX(1234)) | +------------------+ | ? | +------------------+
Dit laat ons zien dat het hexadecimale equivalent van 1234 is 4D2 , en de UNHEX()
functie kan die waarde niet aan.
In dergelijke gevallen kunt u de CONV()
. gebruiken functie in plaats daarvan:
SELECT HEX(1234), CONV('4D2', 16, 10), CONV(HEX(1234), 16, 10);
Resultaat:
+-----------+---------------------+-------------------------+ | HEX(1234) | CONV('4D2', 16, 10) | CONV(HEX(1234), 16, 10) | +-----------+---------------------+-------------------------+ | 4D2 | 1234 | 1234 | +-----------+---------------------+-------------------------+
In dit voorbeeld gebruiken we CONV()
om de waarde om te rekenen van grondtal-16 (hexadecimaal) naar grondtal-10 (decimaal).