为什么 MySQL 的 LIKE 运算符在使用二进制字符串时区分大小写?

Barbara Streisand
发布: 2024-11-07 19:00:03
原创
408 人浏览过

Why is MySQL's LIKE Operator Case Sensitive When Using a Binary String?

MySQL 中 LIKE 的区分大小写

在 MySQL 中使用查询“SELECT concat_ws(title,description) as concatenated 执行 LIKE 搜索时连接 LIKE '%SearchTerm%';",可能会注意到搜索区分大小写,即使表是使用 utf8_general_ci 排序规则和 MyISAM 存储引擎进行编码的。

此行为的原因是当任一操作数是二进制字符串时,LIKE 运算符执行区分大小写的比较。在这种情况下,“连接”字段是一个二进制字符串,导致搜索区分大小写。

要解决此问题并使搜索不区分大小写,建议使用 BINARY 关键字和 LIKE运算符:

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

这确保字符串比较是按二进制执行的,忽略任何大小写差异。

或者,COLLATE 关键字可以与 utf8_bin 排序规则一起使用来使搜索不区分大小写:

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

这两种方法都有效地修改了搜索行为,使其不区分大小写,同时保留 utf8_general_ci 排序规则的性能优势。

以上是为什么 MySQL 的 LIKE 运算符在使用二进制字符串时区分大小写?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!