Mysql
 sql >> Baza danych >  >> RDS >> Mysql

normalizowanie znaków akcentowanych w zapytaniach MySQL

Przyczyną błędu nie jest tabela, ale zestaw znaków wprowadzonych danych, tj. „rené” w zapytaniu. Zachowanie zależy od character_set_connection zmienna:

Używając klienta MySQL, zmień go za 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 )

Przykładowe wyjście:

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)

Alternatywnie, use może jawnie ustawić zestaw znaków za pomocą „wprowadzającego zestaw znaków”:

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)

Wiem, że to pytanie jest dość stare, ale ponieważ Google zaprowadził mnie tutaj z powiązanym pytaniem, uważam, że nadal zasługuje na odpowiedź :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie MySQL — identyfikowanie danych przy użyciu nazw URL, w których dane są zorganizowane w hierarchię

  2. Dlaczego muszę używać klucza obcego, skoro mogę użyć WHERE?

  3. laravel elokwentny sortuj według związku

  4. SQL wybierz n-tego członka grupy

  5. Usuwanie powrotu karetki w Mysql DB