MySQL enthält verschiedene Funktionen, die Sie bei der Arbeit mit Hexadezimalwerten unterstützen können. Eine der offensichtlichsten Funktionen ist HEX()
Funktion, mit der Sie eine Zeichenfolge in ihr hexadezimales Äquivalent umwandeln können.
Es kann jedoch vorkommen, dass Sie eine hexadezimale Zeichenfolge wieder in eine besser lesbare Zeichenfolge konvertieren möchten. Darum geht es in diesem Artikel.
Hier sind drei Möglichkeiten, einen String in MySQL zu „enthexen“:
- Der
UNHEX()
Funktion - Das
X
Hexadezimalschreibweise - Das
0x
Notation
Nachfolgend finden Sie Beispiele für jede dieser Methoden.
Die UNHEX()-Funktion
Dies ist eine String-Funktion, die speziell zum „Enthexen“ eines hexadezimalen Strings erstellt wurde.
Beispiel:
SELECT UNHEX('4361747320616E6420646F6773');
Ergebnis:
+-------------------------------------+ | UNHEX('4361747320616E6420646F6773') | +-------------------------------------+ | Cats and dogs | +-------------------------------------+
Der Weg UNHEX()
funktioniert, ist, dass es jedes Zeichenpaar im Argument als Hexadezimalzahl interpretiert und in das Byte umwandelt, das durch die Zahl repräsentiert wird. Der Rückgabewert ist ein binärer String.
Die X-Notation
Eine alternative Methode zum Enthexen eines Strings ist die Verwendung des X
Schreibweise.
Beispiel:
SELECT X'4361747320616E6420646F6773';
Ergebnis:
+-------------------------------+ | X'4361747320616E6420646F6773' | +-------------------------------+ | Cats and dogs | +-------------------------------+
Das X
Notation basiert auf Standard-SQL. Bei dieser Notation wird die Groß-/Kleinschreibung nicht beachtet, es spielt also keine Rolle, ob Sie ein großes X
verwenden oder Kleinbuchstaben. Dies steht im Gegensatz zu 0x
Notation, die zwischen Groß- und Kleinschreibung unterscheidet.
Beachten Sie, dass das X
Notation erfordert eine gerade Anzahl von Ziffern. Wenn Sie eine ungerade Anzahl von Ziffern haben, können Sie diese mit einer führenden Null auffüllen.
Die 0x-Notation
Und die dritte Möglichkeit, einen String zu enthexen, ist die Verwendung von 0x
Schreibweise.
Beispiel:
SELECT 0x4361747320616E6420646F6773;
Ergebnis:
+------------------------------+ | 0x4361747320616E6420646F6773 | +------------------------------+ | Cats and dogs | +------------------------------+
Das 0x
Notation basiert auf ODBC, für das häufig hexadezimale Zeichenfolgen verwendet werden, um Werte für BLOB-Spalten bereitzustellen. Wie bereits erwähnt, das 0x
Bei der Notation wird zwischen Groß- und Kleinschreibung unterschieden, sodass sie nicht funktioniert, wenn Sie ein X
in Großbuchstaben verwenden .
Das 0x
Notation funktioniert mit einer ungeraden Anzahl von Ziffern, aber nur, weil sie jede ungerade Zahl als eine führende Null interpretiert (wodurch sie gerade wird).
Enthexe eine Zahl
Beachten Sie, dass er HEX()
ist Funktion funktioniert nicht mit Zahlen. Verwenden Sie dazu CONV()
Funktion statt (siehe How to Unhex a Number in MySQL).