数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

搞定MySQL数据库中文模糊检索问题


发布日期:2022年12月23日
 
搞定MySQL数据库中文模糊检索问题

在 MySQL下在进行中文模糊检索时经常会返回一些与之不相关的记录如查找 %a%返回的可能有中文字符却没有a字符存在本人以前也曾遇到过类似问题经详细阅读MySQL的Manual发现可以有一种方法很方便的解决并得到满意的结果

例子


希望通过标题对新闻库进行检索关键字可能包含是中英文如下SQL语句

QUOTE:

select idtitlename from achech_comnews where title like %a%

返回的结果某些title字段确定带了a关键字而有些则只有中文但也随之返回在检索结果中

解决方法使用 BINARY 属性进行检索

QUOTE:

select idtitlename from achech_comnews where binary title like %a%

返回的结果较之前正确但英文字母区分大小写故有时在检索如Achechachech的结果是不一样的知道了使用 BINARY 属性可以解决前面这个问题再看看 MySQL 支持的UCASE 及 CONCAT 函数其中 UCASE 是将英文全部转成大写而CONCAT函数的作用是对字符进行连接以下是我们完全解决后的SQL 语句

QUOTE:

select idtitlename from achech_comnews

where binary ucase(title) like concat(%ucase(a)%)

检索的步骤是先将属性指定为 BINARY 以精确检索结果而被 like 的 title内容存在大小写字母的可能故先使用 ucase 函数将字段内容全部转换成大写字母然后再进行 like 操作而 like 的操作使用模糊方法使用 concat的好处是传进来的可以是直接的关键字不需要带%万用符a直接换成你的变量在任何语言下都万事无忧了 当然你也可以这么写

QUOTE:

select idtitlename from achech_comnews where binary ucase(title) like ucase(%a%)

检索的结果还算满意吧不过速度可能会因此而慢N毫秒

上一篇:从MySQL数据库和表中倒出结构和数据

下一篇:MySQL 5.0系列新的社区稳定版5.0.75发布!