【问题标题】:MySQL search for non-ascii charcter NOT working as intended with LIKEMySQL 对非 ascii 字符的搜索与 LIKE 不按预期工作
【发布时间】:2014-12-30 09:12:57
【问题描述】:

我的 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 字符的表达式。

【问题讨论】:

    标签: php mysql unicode character-encoding


    【解决方案1】:

    默认情况下,MySQL 试图通过将等价字符视为相等来提供帮助。这包括字符上的重音。在documentation 中有一个部分专门讨论这个问题。

    尝试使用binary 运算符:

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

    【讨论】:

    • 我感觉BINARY 会发挥作用。
    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2018-10-17
    • 2023-04-03
    相关资源
    最近更新 更多