首页 > 数据库 > mysql教程 > 为什么 MySQL LIKE 查询使用 utf8_general_ci 编码区分大小写?

为什么 MySQL LIKE 查询使用 utf8_general_ci 编码区分大小写?

Susan Sarandon
发布: 2024-11-09 18:05:02
原创
431 人浏览过

Why are MySQL LIKE Queries Case-Sensitive with utf8_general_ci Encoding?

MySQL LIKE 查询中的大小写敏感

问题:

考虑以下 MySQL 查询:

SELECT concat_ws(title, description) as concatenated
HAVING concatenated LIKE '%SearchTerm%';
登录后复制

尽管使用 LIKE 运算符,当 MyISAM 存储引擎的表编码为 utf8_general_ci 时,搜索似乎区分大小写。

说明:

MyISAM 存储引擎使用大小写-对存储在 utf8_general_ci 编码中的字符串进行不敏感的比较。但是,LIKE 运算符默认执行区分大小写的比较。

最佳解决方案:

要执行不区分大小写的比较,请使用 BINARY 关键字,如下所示:

SELECT ....
FROM ....
WHERE `concatenated` LIKE BINARY '%SearchTerm%';
登录后复制

当其中一个操作数是二进制时,字符串比较将区分大小写

替代解决方案:

或者,使用 COLLATE 语句指定特定于语言环境的排序规则:

SELECT ....
FROM ....
WHERE `concatenated` like '%SearchTerm%' COLLATE utf8_bin;
登录后复制

此方法允许不区分大小写的比较,同时保持原始字符编码。

以上是为什么 MySQL LIKE 查询使用 utf8_general_ci 编码区分大小写?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板