专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » mysql数据库:解决MySQL数据库中文模糊检索问题的思路方法 »正文

mysql数据库:解决MySQL数据库中文模糊检索问题的思路方法

来源: 发布时间:星期二, 2008年12月23日 浏览:38次 评论:0
在 MySQL下在进行中文模糊检索时经常会返回些和的不相关记录如查找 "%a%" 时返回可能有中文却没有a存在本人以前也曾遇到过类似问题经详细阅读MySQLManual发现可以有种思路方法很方便解决并得到满意结果
  希望通过“标题”对新闻库进行检索关键字可能包含是中英文如下SQL语句:
  以下为引用内容:

  
Code:
select id,title,name from achech_com.s where title like '%a%'

  返回结果某些title字段确定带了“a”关键字而有些则只有中文但也随的返回在检索结果中
  解决思路方法使用 BINARY 属性进行检索如:
  以下为引用内容:

  
Code:
select id,title,name from achech_com.s where binary title like '%a%'

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

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

  
Code:
select id,title,name from achech_com.s where binary u(title) like u('%a%')

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

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: