MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie UNHEX() in MariaDB funktioniert

In MariaDB, UNHEX() ist eine eingebaute Zeichenfolgenfunktion, die die umgekehrte Operation von HEX() ausführt Funktion.

Wohingegen das HEX() Funktion gibt eine hexadezimale Darstellung einer gegebenen Zeichenkette zurück, den UNHEX() Funktion gibt die String-Darstellung eines gegebenen Hexadezimalwerts zurück.

Insbesondere UNHEX() interpretiert jedes Paar hexadezimaler Ziffern in seinem Argument als Zahl und wandelt es dann in das Zeichen um, das durch die Zahl dargestellt wird.

Das Ergebnis wird als binärer String zurückgegeben.

Syntax

Die Syntax sieht so aus:

UNHEX(str)

Wobei str ist der Hexadezimalwert, der „ungezähmt“ werden soll.

Beispiel

Hier ist ein einfaches Beispiel:

SELECT UNHEX('61');

Ergebnis:

+-------------+
| UNHEX('61') |
+-------------+
| a           |
+-------------+

Die hexadezimale Darstellung des Kleinbuchstabens a ist 61 , also durch Übergeben von 61 zum UNHEX() Funktion erhalten wir den Kleinbuchstaben a .

Hier ist ein Beispiel, das ein paar weitere Hexadezimalwerte durchläuft:

SELECT 
    UNHEX('61'),
    UNHEX('6161'),
    UNHEX('41'),
    UNHEX('4141'),
    UNHEX('62'),
    UNHEX('6262'),
    UNHEX('42'),
    UNHEX('4242'),
    UNHEX('436174'),
    UNHEX('446F67'),
    UNHEX('50617773202620436C617773'),
    UNHEX('5A65627261');

Ergebnis (bei vertikaler Ausgabe):

                      UNHEX('61'): a
                    UNHEX('6161'): aa
                      UNHEX('41'): A
                    UNHEX('4141'): AA
                      UNHEX('62'): b
                    UNHEX('6262'): bb
                      UNHEX('42'): B
                    UNHEX('4242'): BB
                  UNHEX('436174'): Cat
                  UNHEX('446F67'): Dog
UNHEX('50617773202620436C617773'): Paws & Claws
              UNHEX('5A65627261'): Zebra

Im Vergleich zu HEX()

Hier ist ein Beispiel, das HEX() verschachtelt innerhalb von UNHEX() um die ursprüngliche Zeichenkette zurückzugeben:

SELECT 
    HEX('Homer Jay'),
    UNHEX(HEX('Homer Jay'));

Ergebnis:

+--------------------+-------------------------+
| HEX('Homer Jay')   | UNHEX(HEX('Homer Jay')) |
+--------------------+-------------------------+
| 486F6D6572204A6179 | Homer Jay               |
+--------------------+-------------------------+

Beachten Sie jedoch, dass UNHEX() gibt sein Ergebnis als binären String zurück:

SELECT 
    COLLATION('Homer Jay') AS "Literal",
    COLLATION(HEX('Homer Jay')) AS "HEX()",
    COLLATION(UNHEX(HEX('Homer Jay'))) AS "UNHEX()";

Ergebnis:

+-----------------+-----------------+---------+
| Literal         | HEX()           | UNHEX() |
+-----------------+-----------------+---------+
| utf8_general_ci | utf8_general_ci | binary  |
+-----------------+-----------------+---------+

Null-Argumente

Übergabe von null zu UNHEX() ergibt null :

SELECT UNHEX(null);

Ergebnis:

+-------------+
| UNHEX(null) |
+-------------+
| NULL        |
+-------------+

Keine Argumente übergeben

Aufruf von UNHEX() ohne Übergabe von Argumenten ergibt sich ein Fehler:

SELECT UNHEX();

Ergebnis:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNHEX'