>  기사  >  데이터 베이스  >  Mysql数据库like模糊查询中文字段不准确的临时解决办法

Mysql数据库like模糊查询中文字段不准确的临时解决办法

WBOY
WBOY원래의
2016-06-07 15:34:461688검색

在mysql下,在进行like检索时,有时候会返回一些与查询词不相关的记录,如查找 %s% 时,返回的结果中可能有中文字符,却没有s字符存在,这与数据库中文编码规则有关 如希望查找title中含有字母s的所有新闻: select * from test.news where title like ' % s

在mysql下,在进行like检索时,有时候会返回一些与查询词不相关的记录,如查找 “%s%” 时,返回的结果中可能有中文字符,却没有s字符存在,这与数据库中文编码规则有关

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

<span>select</span> <span>*</span> <span>from</span> test.news <span>where</span> title <span>like</span> <span>'<span>%</span>s<span>%</span>'</span>

返回的结果中有一些包含s,而有些则只有中文,很郁闷(也很邪恶,嘿嘿)。

测试了下,发现一种解决方法,就是使用 BINARY(是CAST(<em><code>str AS BINARY)简短写法) 强制转换进行检索

<span>select</span> <span>*</span> <span>from</span> test.news <span>where</span> <span>binary</span> title <span>like</span> <span>'<span>%</span>s<span>%</span>'</span>

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

<span>select</span> <span>*</span> <span>from</span> test.news <span>where</span> <span>binary</span> <span>ucase</span><span>(</span>title<span>)</span> <span>like</span>  <span>'<span>%</span>s<span>%</span>'</span>

如此,临时解决办法搞定,不过速度会变慢,希望以后的mysql版本能解决掉此问题。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.