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

In MySQL funktioniert die Funktion CHAR() seltsam

Vor MySQL 8.0.19 bestand das Problem, mit dem Sie konfrontiert sind, nicht. binary-as-hex Die Client-Option ist ab MySQL 8.0.19 standardmäßig aktiviert.

Führen Sie status aus oder \s bei MySQL. Sie werden eine Zeile über Binärdaten bemerken. Wenn es als hexadezimal angegeben ist, Ausgaben von Funktionen wie CHAR() und UNHEX() wird hexadezimal statt als normaler Text angezeigt.

Um dies zu vermeiden, können Sie die USING-Charset-Klausel von CHAR() verwenden .

mysql> SELECT CHAR(97);
+--------------------+
| CHAR(97)           |
+--------------------+
| 0x61               |
+--------------------+
1 row in set (0.00 sec)

mysql> SELECT CHAR(97 USING utf8mb4);
+------------------------+
| CHAR(97 USING utf8mb4) |
+------------------------+
| a                      |
+------------------------+
1 row in set (0.00 sec)

Oder Sie können --skip-binary-as-hex verwenden . Die in Windows zu befolgenden Schritte sind:

  1. Eingabeaufforderung öffnen.

  2. Ändern Sie das Verzeichnis. In meinem Fall lautete der Befehl:

    cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
    
  3. Ausführen

    mysql -u root -p --skip-binary-as-hex
    
  4. Geben Sie das Passwort ein.

  5. Nun die Ausgaben von CHAR() Funktion wird so sein, wie Sie es erwarten.

Hinweis :Der --skip-binary-as-hex -Methode funktioniert, bis Sie MySQL beenden. Sie müssen --skip-binary-as-hex verwenden Methode jedes Mal, wenn Sie MySQL öffnen, sodass keine Hexadezimalwerte angezeigt werden.

Weitere Informationen finden Sie unter diesen Links: