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

normalizace znaků s diakritikou v dotazech MySQL

Důvodem chyby není tabulka, ale znaková sada vašeho vstupu, tedy „rené“ ve vašem dotazu. Chování závisí na character_set_connection proměnná:

Pomocí klienta MySQL jej změňte pomocí SET NAMES :

SET character_set_client = charset_name;
SET character_set_results = charset_name;
SET character_set_connection = charset_name;

(z http://dev.mysql.com/doc /refman/5.5/en/charset-connection.html )

Příklad výstupu:

mysql> set names latin1;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from User where username = 'rené' collate utf8_general_ci;
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from User where username = 'rené' collate utf8_general_ci;
Empty set (0.00 sec)

Alternativně může použití explicitně nastavit znakovou sadu pomocí „uvaděče znakové sady“:

mysql> set names latin1;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from User where username = _utf8'rené' collate utf8_general_ci;
Empty set (0.00 sec)

Vím, že tato otázka je docela stará, ale protože mě sem Google přivedl kvůli související otázce, myslím, že si stále zaslouží odpověď :)



  1. MySQL GROUP &COUNT Více tabulek

  2. Aktualizujte a vyberte v jednom dotazu

  3. Chyba přihlášení k serveru SQL:přihlášení se nezdařilo pro uživatele 'NT AUTHORITY\SYSTEM'

  4. Pět nejlepších softwarových aplikací pro přístup k serverům MySQL/MariaDB