我对我的laravel项目进行了简单的搜索,当我在其中输入字符“ñ”并提交搜索时,将检索表中的所有行。
查询很简单,它只使用一个:where('title','LIKE',“%$ search_criteria%”)
我的数据库是utf8_unicode_ci
为什么会这样?
答案 0 :(得分:0)
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;