1
我有一個簡單的搜索我的laravel項目,當我輸入字符'ñ'並提交搜索,表中的所有行都檢索。當輸入字符ñ進入搜索,它從數據庫檢索所有行
查詢方式簡單,它僅使用一個其中:其中( '標題', '喜歡', 「%$搜尋準則%」)
我的DB是utf8_unicode_ci
這是爲什麼?發生
我有一個簡單的搜索我的laravel項目,當我輸入字符'ñ'並提交搜索,表中的所有行都檢索。當輸入字符ñ進入搜索,它從數據庫檢索所有行
查詢方式簡單,它僅使用一個其中:其中( '標題', '喜歡', 「%$搜尋準則%」)
我的DB是utf8_unicode_ci
這是爲什麼?發生
utf8_general_ci排序規則既不區分大小寫又不區分重音,因此您的查詢將返回包含字母'n'的所有行,大寫或小寫,加重或不加重。請參閱http://dev.mysql.com/doc/refman/5.6/en/charset-collation-effect.html瞭解歸類如何影響搜索和比較。
您可以通過在SQL語句末尾添加'COLLATION new_collation'來更改給定SQL語句的排序規則。因此,這應該爲你工作:
SELECT * FROM table WHERE title LIKE '%ñ%' COLLATION utf8_bin;
我的整理是utf8_unicode_ci不utf8_general_ci。 另一方面,應該更好地讓我的數據庫更改爲排序規則utf8_bin? – user3173855 2014-10-30 17:00:36
最好使用對數據庫中的ORDER BY子句有意義的排序規則,即。 utf8_general_ci,並且如果您想要完全匹配,則只需在特定語句中更改排序規則。通過這種方式,如果應用程序顯示列表,它們將按照邏輯順序排列在最終用戶的屏幕上。 – 2014-10-30 20:01:08