In MySQL das UNHEX()
Mit der Funktion können Sie eine Zeichenfolge in MySQL „enthexen“. Mit anderen Worten, es ermöglicht Ihnen, einen Hexadezimalwert in eine für Menschen lesbare Zeichenfolge umzuwandeln.
Insbesondere interpretiert die Funktion jedes Zeichenpaar im Argument als Hexadezimalzahl und konvertiert sie in das Byte, das durch die Zahl dargestellt wird. Der Rückgabewert ist ein binärer String.
Syntax
Die Syntax lautet wie folgt:
UNHEX(str)
Wobei str
ist der zu enthexende String.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein einfaches Beispiel:
SELECT UNHEX('436F636F6E75742070616C6D') AS Unhexed;
Ergebnis:
+--------------+ | Unhexed | +--------------+ | Coconut palm | +--------------+
Also habe ich einen Hex-Wert als Argument angegeben, und die Funktion hat diesen Wert enthext und das Ergebnis zurückgegeben (das eine binäre Zeichenfolge ist).
Beispiel 2 – Wandeln Sie einen String in Hexadezimal um
Wir können auch das Gegenteil tun, indem wir HEX()
verwenden Funktion, um den String in einen Hexadezimalwert umzuwandeln:
SELECT HEX('Coconut palm') AS Hexed;
Ergebnis:
+--------------------------+ | Hexed | +--------------------------+ | 436F636F6E75742070616C6D | +--------------------------+
Daher könnten wir eine Funktion in die andere verschachteln und würden einfach unser Argument zurückgeben:
SELECT UNHEX(HEX('Coconut palm')) AS 'Result 1', HEX(UNHEX('436F636F6E75742070616C6D')) AS 'Result 2';
Ergebnis:
+--------------+--------------------------+ | Result 1 | Result 2 | +--------------+--------------------------+ | Coconut palm | 436F636F6E75742070616C6D | +--------------+--------------------------+
Beispiel 3 – Ungültige Hexadezimalzeichen
Das Argument muss gültige Hexadezimalzeichen enthalten. Wenn eines der Zeichen keine gültigen Hexadezimalzeichen ist, ist das Ergebnis NULL
:
SELECT UNHEX(' '), UNHEX('_xyz');
Ergebnis:
+------------+---------------+ | UNHEX(' ') | UNHEX('_xyz') | +------------+---------------+ | NULL | NULL | +------------+---------------+
Beispiel 4 – Numerische Argumente
Das UNHEX()
Funktion funktioniert nicht mit den hexadezimalen Äquivalenten von numerischen Werten.
Hier ist ein Beispiel dafür, was ich meine:
SELECT HEX(1234), UNHEX('4D2');
Ergebnis:
+-----------+--------------+ | HEX(1234) | UNHEX('4D2') | +-----------+--------------+ | 4D2 | ? | +-----------+--------------+
Eine andere Möglichkeit, dies zu demonstrieren, wäre:
SELECT UNHEX(HEX(1234));
Ergebnis:
+------------------+ | UNHEX(HEX(1234)) | +------------------+ | ? | +------------------+
Das zeigt uns also, dass das hexadezimale Äquivalent von 1234 ist 4D2 , und das UNHEX()
Funktion kann diesen Wert nicht verarbeiten.
In solchen Fällen können Sie CONV()
verwenden Funktion stattdessen:
SELECT HEX(1234), CONV('4D2', 16, 10), CONV(HEX(1234), 16, 10);
Ergebnis:
+-----------+---------------------+-------------------------+ | HEX(1234) | CONV('4D2', 16, 10) | CONV(HEX(1234), 16, 10) | +-----------+---------------------+-------------------------+ | 4D2 | 1234 | 1234 | +-----------+---------------------+-------------------------+
In diesem Beispiel verwenden wir CONV()
um den Wert von Basis 16 (hexadezimal) in Basis 10 (dezimal) umzuwandeln.