Mysql
 sql >> Base de données >  >> RDS >> Mysql

Dans MySQL, la fonction CHAR() fonctionne bizarrement

Avant MySQL 8.0.19, le problème auquel vous êtes confronté n'existait pas. binary-as-hex L'option client est activée par défaut à partir de MySQL 8.0.19.

Exécutez status ou \s dans MySQL. Vous remarquerez une ligne sur les données binaires. S'il est mentionné en hexadécimal, les sorties de fonctions comme CHAR() et UNHEX() s'affichera en hexadécimal au lieu du texte normal.

Pour éviter cela, vous pouvez utiliser la clause USING charset de CHAR() .

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)

Ou, vous pouvez utiliser --skip-binary-as-hex . Les étapes à suivre sous Windows sont :

  1. Ouvrez l'invite de commande.

  2. Changez de répertoire. Dans mon cas, la commande était :

    cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
    
  3. Exécuter

    mysql -u root -p --skip-binary-as-hex
    
  4. Saisissez le mot de passe.

  5. Maintenant, les sorties de CHAR() la fonction sera telle que vous l'attendez.

Remarque :Le --skip-binary-as-hex fonctionne jusqu'à ce que vous quittiez MySQL. Vous devez utiliser --skip-binary-as-hex à chaque fois que vous ouvrez MySQL, de sorte que les valeurs hexadécimales ne seront pas affichées.

Vous pouvez consulter ces liens pour plus d'informations :