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

原创 2007年10月15日 22:29: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毫秒。 

Mybatis使用MySQL进行模糊查询时输入中文检索不到结果

项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空。...
  • DeveloperFanyl
  • DeveloperFanyl
  • 2015年09月16日 18:11
  • 5952

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

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

Mysql模糊查询like效率,以及更高效的写法 在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时

Mysql模糊查询like效率,以及更高效的写法 在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百...
  • forest_fire
  • forest_fire
  • 2017年06月23日 09:59
  • 1239

PHP+MySQL数据库之中文全文检索解决方案

由于MYSQL仅支持英文的全文索引FULLTEXT,不支持中文,因为中文不能像英文那样通过空格来准确的判断单词,而需要通过语义来判断,这就需要我们对中文进行切词。 但是我们可以通过另一种方式来曲线解...
  • xm1331305
  • xm1331305
  • 2014年08月16日 14:56
  • 750

mysql数据库中检索信息

  • 2012年03月09日 15:47
  • 64KB
  • 下载

mysql数据库中文乱码问题总结及解决手段

一下操作是针对linux下安装的mysql数据库 1、查看表的编码方式: mysql> show create table enb_basic \G; *********************...
  • addisonjing
  • addisonjing
  • 2017年03月13日 10:00
  • 209

Mysql数据库中文乱码问题之解决方法

这是一个在工作中遇到的真实案例,经过几天的摸索终于将问题解决了,现用文字记录下来,方便遇到类似问题的朋友参考。 在进入正题前,先介绍一下这个案例背景。 前段时间由于工作原因,需要将mysq...
  • chris_mao
  • chris_mao
  • 2015年05月28日 15:41
  • 1249

基于SSM框架的增删改查Ajax分页模糊查询(有Mysql数据库)

  • 2017年06月26日 14:19
  • 9.18MB
  • 下载

解决SpringBoot框架下利用jdbcTemplate插入mysql数据库中文乱码问题

1、排查Idea或eclipse本身编码设置检查所使用的代码编辑器idea或eclipse,查看是设置了UTF-8编码,以及项目本身的编码问题。 2、排查插入数据库之前中文是否乱码检查获取到的中文数据...
  • fenfenguai
  • fenfenguai
  • 2017年11月09日 15:20
  • 212

lucene 4.10 检索mysql数据库

今天拿到一个需求,需要使用lucene 检索mysql数据库的一个通讯录表,需要支持全文全字段复合检索. 用户的表结构如下        (通讯录mysql表结构)   在网上找了一...
  • Baple
  • Baple
  • 2017年07月24日 10:04
  • 247
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决MySQL数据库中文模糊检索问题
举报原因:
原因补充:

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