MySQL搜索非ascii字符不能像LIKE一样工作

时间:2014-11-03 16:47:53

标签: php mysql unicode character-encoding

我在MySQL数据库中有一个带有varchar字段的表,该字段具有utf8_general_ci排序规则。我的问题是当我进行像

这样的查询时
SELECT title FROM node WHERE title LIKE "%ñ%"

在PHP中,它返回所有标题中包含“n”和“ñ”的标题。我尝试从linux中的终端执行相同的查询,但我没有得到任何结果。我不知道是否是因为终端缺乏unicode支持。

如何过滤查询以显示包含具有我想要的确切字符的表达式的结果?它是PHP到MySQL的传输问题吗?我有PHP 5.3和MySQL 5.1。

PS:

我知道

SELECT title FROM node WHERE title LIKE "%n%"

返回与上面的查询相同的结果(使用“n”和“ñ”),我不介意。我只是希望能够使用匹配的unicode charcat来过滤表达式。

1 个答案:

答案 0 :(得分:1)

默认情况下,MySQL会尝试将等效处理的等效字符作为帮助。这包括角色的重音。 documentation有一部分专门用于此。

尝试使用binary运算符:

SELECT title FROM node WHERE title LIKE BINARY '%ñ%'