Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Funktionsweise der UNHEX()-Funktion in MySQL

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.