Bạn có thể thay đổi collation trong thời gian chạy trong truy vấn sql,
...where title like '%torun%' collate utf8_general_ci
nhưng hãy cẩn thận rằng việc thay đổi collation khi đang bay trong thời gian chạy forgoes khả năng mysql sử dụng một chỉ số, vì vậy hiệu suất trên bảng lớn có thể khủng khiếp.
Hoặc, bạn có thể sao chép cột này sang cột khác, chẳng hạn như searchable_title
, nhưng thay đổi đối chiếu trên cột đó. Nó thực sự phổ biến để làm loại công cụ này, nơi bạn sao chép dữ liệu nhưng có nó trong một số hình thức hơi khác nhau được tối ưu hóa cho một số khối lượng công việc/mục đích cụ thể. Bạn có thể sử dụng trình kích hoạt như một cách hay để giữ cho các cột trùng lặp được đồng bộ hóa. Phương pháp này có khả năng hoạt động tốt, nếu được lập chỉ mục.
Lưu ý - Đảm bảo rằng db của bạn thực sự có các ký tự đó chứ không phải các thực thể html. Ngoài ra, bộ ký tự của kết nối của bạn cũng quan trọng. Trên giả định nó là thiết lập để utf8, ví dụ, thông qua set names như set names utf8
Nếu không, bạn cần một introducer cho giá trị văn chương
...where title like _utf8'%torun%' collate utf8_general_ci
và tất nhiên, giá trị trong dấu nháy đơn thực sự phải utf8 được mã hóa, ngay cả khi phần còn lại của truy vấn sql không.
http://stackoverflow.com/questions/2302813/normalizing-accented-characters-in-mysql-queries – Sun
@SunWKim Tôi đã thử điều đó trước đây nhưng không hiệu quả đối với tôi. – ocanal
@ocanal bạn có tìm thấy giải pháp mà bạn có thể chia sẻ với chúng tôi không? – zvzej