解决MySQL数据库中文模糊检索问题

原创 2007年10月16日 09:06:00
在 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毫秒。 

学习MySQL数据库中文模糊检索问题

  • zgqtxwd
  • zgqtxwd
  • 2008-05-01 04:33:00
  • 94

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

在 MySQL下,在进行中文模糊检索时,经常会返回一些与之不相关的记录,如查找 "%a%" 时,返回的可能有中文字符,却没有a字符存在。本人以前也曾遇到过类似问题,经详细阅读MySQL的Manual,...
  • yangfeixien
  • yangfeixien
  • 2013-11-11 09:50:26
  • 440

GbookOfCool留言板

  • 2004年07月30日 00:00
  • 107KB
  • 下载

EASYUI 1.4版 combobox firefox 下不支持中文检索的问题

最近再搞easyui, 突然间发现一个奇怪的问题,easyui 的combobox 在IE下面输入中文,可以自动实现筛选和检索的功能,但是在firefox下面不可以。 于是查了一些资料,发现原来是浏览...
  • oarsman
  • oarsman
  • 2016-04-07 09:51:14
  • 2038

solr之模糊搜索(Fuzzy matching)

solr的模糊搜索主要有通配符,范围查询,近距离搜索等几类。下面分别探讨一下用法。1. 通配符查询通配符只是对单个term有效,对短语不起作用,ps:短语就是在查询条件上加双引号,比如 title:"...
  • aiyueqingfeng
  • aiyueqingfeng
  • 2016-06-23 17:11:41
  • 1415

数据查询支持中文拼音首字母模糊检索

需求:在做软件的过程中,发现不少客户在做数据检索时,打汉字怕麻烦,也影响工作效率,要求在查询时,支持查询汉字的字母开头查询。     做到支持数据库拼音码查询,主要分一下几步实现:     1...
  • smartsmile2012
  • smartsmile2012
  • 2013-01-10 10:11:06
  • 7256

mysql模糊查找英文可以查找中文不行(详细记录)

mysql模糊查找英文可以查找中文不行,这个问题我找了好久都没有一个符合我情况的详细描述,所以我把我自己的情况详细记录以供大家参考 问题描述如下: 1、查找条件为中文时,查找结果值为空; 2、英文...
  • Adonis_D_Gogh
  • Adonis_D_Gogh
  • 2017-08-14 15:54:04
  • 516

android 模糊搜索框

  • 2016年11月04日 14:51
  • 25.64MB
  • 下载

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

在mysql下,在进行like检索时,有时候会返回一些与查询词不相关的记录,如查找 “%s%” 时,返回的结果中可能有中文字符,却没有s字符存在,这与数据库中文编码规则有关 如希望查找title中含...
  • sibang
  • sibang
  • 2014-08-21 16:50:08
  • 713

解决canvas画图模糊的问题

canvas 画图经常发现他是模糊的。解决这个问题主要从两个方面下手。 改变canvas渲染的像素情况:画1像素的线条看起来模糊不清,好像更宽的样子。 解决方案 var ctx = canv...
  • u010620152
  • u010620152
  • 2017-05-05 11:01:26
  • 291
收藏助手
不良信息举报
您举报文章:解决MySQL数据库中文模糊检索问题
举报原因:
原因补充:

(最多只允许输入30个字)