首页  >  文章  >  数据库  >  为什么 MySQL 中使用 LIKE 运算符和 utf8_general_ci 编码进行不区分大小写搜索时区分大小写?

为什么 MySQL 中使用 LIKE 运算符和 utf8_general_ci 编码进行不区分大小写搜索时区分大小写?

Susan Sarandon
Susan Sarandon原创
2024-11-08 14:12:021017浏览

Why is Case-Insensitive Searching in MySQL with LIKE Operator and utf8_general_ci Encoding Case-Sensitive?

MySQL 中不区分大小写的搜索

本文探讨了 MySQL 在具有 utf8_general_ci 编码和 MyISAM 存储引擎的表中使用 LIKE 运算符进行查询的问题导致搜索区分大小写。

要解决此问题,有两种推荐的解决方案:

1.使用二进制字符串:

通过将 BINARY 关键字附加到 LIKE 运算符,可以实现不区分大小写的搜索:

SELECT .... FROM .... WHERE `concatenated` LIKE BINARY '%SearchTerm%';

这种方法比其他方法表现更好,因为它强制使用二进制字符串比较,使其更有效率。

2.使用 COLLATE:

或者,COLLATE 关键字可用于指定特定的排序规则:

SELECT .... FROM .... WHERE `concatenated` like '%SearchTerm%' COLLATE utf8_bin;

通过使用 utf8_bin 排序规则,强制执行不区分大小写的比较。虽然此方法提供了更大的灵活性,但与二进制字符串方法相比,它可能会对性能产生轻微影响。

以上是为什么 MySQL 中使用 LIKE 运算符和 utf8_general_ci 编码进行不区分大小写搜索时区分大小写?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn