Mysql
 sql >> Database >  >> RDS >> Mysql

In MySQL, la funzione CHAR() funziona in modo strano

Prima di MySQL 8.0.19, il problema che stai affrontando non esisteva. binary-as-hex l'opzione client è abilitata per impostazione predefinita da MySQL 8.0.19.

Esegui status o \s in MySQL. Noterai una riga sui dati binari. Se è menzionato come esadecimale, output di funzioni come CHAR() e UNHEX() verrà visualizzato come esadecimale anziché come testo normale.

Per evitare ciò puoi usare la clausola USING charset di 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)

Oppure puoi usare --skip-binary-as-hex . I passaggi da seguire in Windows sono:

  1. Apri il prompt dei comandi.

  2. Cambia la directory. Nel mio caso il comando era:

    cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
    
  3. Corri

    mysql -u root -p --skip-binary-as-hex
    
  4. Inserisci la password.

  5. Ora, gli output di CHAR() la funzione sarà come ti aspetti.

Nota :Il --skip-binary-as-hex il metodo funziona fino a quando non esci da MySQL. Devi usare --skip-binary-as-hex ogni volta che apri MySQL in modo tale che i valori esadecimali non vengano mostrati.

Puoi fare riferimento a questi link per ulteriori informazioni: