MySQL bevat verschillende functies die u kunnen helpen bij het werken met hexadecimale waarden. Een van de meest voor de hand liggende functies is de HEX()
functie, waarmee u een tekenreeks kunt converteren naar zijn hexadecimale equivalent.
Het kan echter voorkomen dat u een hexadecimale tekenreeks terug wilt converteren naar een beter leesbare tekenreeks. Daar gaat dit artikel over.
Hier zijn drie manieren om een string te "unhexen" in MySQL:
- De
UNHEX()
functie - De
X
hexadecimale notatie - De
0x
notatie
Hieronder staan voorbeelden van elk van deze methoden.
De UNHEX()-functie
Dit is een tekenreeksfunctie die speciaal is gebouwd voor het "unhexen" van een hexadecimale tekenreeks.
Voorbeeld:
SELECT UNHEX('4361747320616E6420646F6773');
Resultaat:
+-------------------------------------+ | UNHEX('4361747320616E6420646F6773') | +-------------------------------------+ | Cats and dogs | +-------------------------------------+
De manier waarop UNHEX()
werkt, is dat het elk paar tekens in het argument interpreteert als een hexadecimaal getal en het omzet in de byte die door het getal wordt vertegenwoordigd. De geretourneerde waarde is een binaire tekenreeks.
De X-notatie
Een alternatieve manier om een string te unhexen is door de X
. te gebruiken notatie.
Voorbeeld:
SELECT X'4361747320616E6420646F6773';
Resultaat:
+-------------------------------+ | X'4361747320616E6420646F6773' | +-------------------------------+ | Cats and dogs | +-------------------------------+
De X
notatie is gebaseerd op standaard SQL. Deze notatie is niet hoofdlettergevoelig, dus het maakt niet uit of u een hoofdletter X
gebruikt of kleine letters. Dit in tegenstelling tot de 0x
notatie, die hoofdlettergevoelig is.
Merk op dat de X
notatie vereist een even aantal cijfers. Als u een oneven aantal cijfers heeft, kunt u dit invullen met een voorloopnul.
De 0x-notatie
En de derde manier om een string te unhexen is door de 0x
. te gebruiken notatie.
Voorbeeld:
SELECT 0x4361747320616E6420646F6773;
Resultaat:
+------------------------------+ | 0x4361747320616E6420646F6773 | +------------------------------+ | Cats and dogs | +------------------------------+
De 0x
notatie is gebaseerd op ODBC, waarvoor vaak hexadecimale tekenreeksen worden gebruikt om waarden voor BLOB-kolommen op te geven. Zoals gezegd, de 0x
notatie is hoofdlettergevoelig, dus het werkt niet als u een hoofdletter X
gebruikt .
De 0x
notatie werkt met een oneven aantal cijfers, maar alleen omdat het een oneven getal interpreteert als een voorloopnul (waardoor het even wordt).
Een nummer unhexen
Merk op dat hij HEX()
functie werkt niet op getallen. Gebruik hiervoor de CONV()
functie in plaats daarvan (zie Een nummer unhexen in MySQL).