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中文网其他相关文章!