mysql like模糊查询中文字段不准确的临时解决办法

发布时间:2020-04-29编辑:脚本学堂
mysql进行like检索时,有时会返回一些与查询词不相关的记录,如何解决呢?本文给出一个临时的解决方法,供参考。

比如查找 “%s%” 时,返回的结果中可能有中文字符,却没有s字符存在,这与数据库中文编码规则有关。

如希望查找title中含有字母s的所有新闻:  
 

复制代码 代码示例:
select * from test.news where title like '%s%'

返回的结果中有一些包含s,而有些则只有中文。

提供一种解决方法:
使用 BINARY(是CAST(str AS BINARY)简短写法) 强制转换进行检索:
 

复制代码 代码示例:
select * from test.news where binary title like '%s%'


结果比较准确了。
有个问题就是字母区分大小写,检索的时候依然不正确,只好再转化一下:
 

复制代码 代码示例:
select * from test.news where binary ucase(title) like  '%s%'

这个临时方法,会带来性能上的损失,大家有更好的办法,欢迎分享一下。
坐等高手路过!脚本学堂,祝大家学习进步!