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

3 Möglichkeiten, einen String in MySQL zu „enthexen“.

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).