Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

chuẩn hóa các ký tự có dấu trong các truy vấn MySQL

Lý do cho lỗi không phải là bảng mà là tập ký tự của đầu vào của bạn, tức là 'rené' trong truy vấn của bạn. Hành vi phụ thuộc vào character_set_connection biến:

Sử dụng MySQL Client, thay đổi nó bằng cách sử dụng SET NAMES :

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

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

Ví dụ đầu ra:

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)

Ngoài ra, việc sử dụng có thể đặt bộ ký tự một cách rõ ràng bằng cách sử dụng 'người giới thiệu bộ ký tự':

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)

Tôi biết câu hỏi này khá cũ nhưng vì Google đã dẫn tôi đến đây cho một câu hỏi liên quan, tôi mặc dù nó vẫn xứng đáng có câu trả lời :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi ngày giờ JS thành ngày giờ MySQL

  2. Các cột được mã hóa MySQL

  3. Có thể chèn dữ liệu vào hai bảng khác nhau trong mysql bằng một php truy vấn chèn không?

  4. Mã hóa mật khẩu trong Java hoặc MySQL?

  5. Triển khai các thẻ bắt đầu bằng # trên twitter và facebook