Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

No MySQL, a função CHAR() funciona de forma estranha


Antes do MySQL 8.0.19, o problema que você está enfrentando não existia. binary-as-hex A opção client é habilitada por padrão no MySQL 8.0.19.

Execute status ou \s em MySQL. Você notará uma linha sobre dados binários. Se for mencionado como hexadecimal, saídas de funções como CHAR() e UNHEX() será exibido como hexadecimal em vez de texto normal.

Para evitar isso, você pode usar a cláusula 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 você pode usar --skip-binary-as-hex . Os passos a seguir no Windows são:

  1. Abra o Prompt de Comando.

  2. Altere o diretório. No meu caso o comando foi:
    cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
    

  3. Correr
    mysql -u root -p --skip-binary-as-hex
    

  4. Digite a senha.

  5. Agora, as saídas de CHAR() função será como você espera que seja.

Observação :O --skip-binary-as-hex O método funciona até você sair do MySQL. Você precisa usar --skip-binary-as-hex sempre que você abrir o MySQL de forma que os valores hexadecimais não sejam mostrados.

Você pode consultar estes links para obter mais informações: