请选择 进入手机版 | 继续访问电脑版
贠老师培训群:150322713    贠老师QQ:767708506

贠老师office培训-excel学习网

 找回密码
 立即注册
点击咨询贠老师
查看: 373|回复: 15

[mysql] 如何搞定MySQL数据库中文模糊检索的问题

[复制链接]

607

主题

604

帖子

1909

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1909
发表于 2016-2-23 21:50:16 | 显示全部楼层 |阅读模式

在 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毫秒。


想要了解更多更全面的web前段知识,css样式,html教程,数据库教程,word教程,excel教程等等,就到excel学习网www.excelxue.com


回复

使用道具 举报

7

主题

833

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2016-3-13 14:39:52 | 显示全部楼层
楼主是好人哪,感谢分享,太棒了!
回复 支持 反对

使用道具 举报

1

主题

345

帖子

364

积分

中级会员

Rank: 3Rank: 3

积分
364
QQ
发表于 2016-3-19 09:55:46 | 显示全部楼层
先收藏再学习,谢谢啦!
回复 支持 反对

使用道具 举报

0

主题

903

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2016-3-27 11:14:47 | 显示全部楼层
楼主不错
回复 支持 反对

使用道具 举报

0

主题

957

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2016-4-4 12:55:19 | 显示全部楼层
学习贵在坚持哦
回复 支持 反对

使用道具 举报

0

主题

957

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2016-4-6 13:30:45 | 显示全部楼层
佩服你,能发这么好的帖子,厉害
回复 支持 反对

使用道具 举报

1

主题

894

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2016-4-13 19:26:54 | 显示全部楼层
顶一个
回复 支持 反对

使用道具 举报

0

主题

896

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2016-4-14 11:23:26 | 显示全部楼层
好啊楼主,没想到啊,太好了
回复 支持 反对

使用道具 举报

0

主题

864

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2016-4-18 13:08:50 | 显示全部楼层
一下子解决了我工作当中的难题,谢谢楼主,非常感谢!
回复 支持 反对

使用道具 举报

0

主题

864

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2016-4-20 14:05:01 | 显示全部楼层
顶顶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



陕ICP备15003731号  

贠老师培训 GMT+8, 2018-11-21 01:32 , Processed in 0.211026 second(s), 32 queries .

快速回复 返回顶部 返回列表