sql >> Databáze >  >> RDS >> Mysql

V MySQL funguje funkce CHAR() divně

Před MySQL 8.0.19 problém, kterému čelíte, neexistoval. binary-as-hex možnost klienta je standardně povolena od MySQL 8.0.19.

Spusťte status nebo \s v MySQL. Všimnete si řádku o binárních datech. Pokud je uvedeno jako hexadecimální, výstupy funkcí jako CHAR() a UNHEX() se zobrazí jako hexadecimální místo normálního textu.

Abyste tomu zabránili, můžete použít klauzuli USING znakové sady 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)

Nebo můžete použít --skip-binary-as-hex . V systému Windows je třeba postupovat takto:

  1. Otevřete příkazový řádek.

  2. Změňte adresář. V mém případě byl příkaz:

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

    mysql -u root -p --skip-binary-as-hex
    
  4. Zadejte heslo.

  5. Nyní výstupy CHAR() funkce bude taková, jakou očekáváte.

Poznámka :--skip-binary-as-hex metoda funguje, dokud neukončíte MySQL. Musíte použít --skip-binary-as-hex při každém otevření MySQL tak, aby se hexadecimální hodnoty nezobrazovaly.

Další informace naleznete na těchto odkazech:



  1. Jak efektivně modelujete dědičnost v databázi?

  2. SQLite Select

  3. Doporučené postupy mysqldump:Část 1 – Předpoklady pro MySQL

  4. Jak dám každému registrovanému uživateli jeho vlastní URL pomocí PHP?