控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

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

作者:未知 出处:不详 2010年01月27日 阅读:

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

例子:

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

以下为引用的内容:

QUOTE:

select id,title,name from achech_com.news where title like '%a%' 

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

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

以下为引用的内容:

QUOTE:

select id,title,name from achech_com.news where binary title like '%a%' 

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

以下为引用的内容:

QUOTE:

select id,title,name from achech_com.news

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

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

以下为引用的内容:

QUOTE:

select id,title,name from achech_com.news where binary ucase(title) like ucase('%a%') 

检索的结果还算满意吧,不过速度可能会因此而慢  N  毫秒。
                                                           
                                                            【注:本文由控件中国网转载】

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统