开发者社区> 科技小能手> 正文

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

简介:
+关注继续查看
我在这里谈一下 MYSQL的中文模糊搜索。
我的MYSQL版本。
version()
5.1.22-rc-community-log
这里用到的表:
Table   Create Table                                           
------  -------------------------------------------------------
a1      CREATE TABLE `a1` (                                    
          `id` int(11) NOT NULL AUTO_INCREMENT,                
          `str1` char(255) DEFAULT NULL,                       
          PRIMARY KEY (`id`)                                   
        ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8  
示例数据:
set names gbk;
insert into a1(str1) values
('靠'),('FUCK'),('fuck'),
('I love your mind.'),
('大话西游'),('卡拉是条狗'),
('没完没了');
(0 row(s)affected)
(0 ms taken)

(7 row(s)affected)
(0 ms taken)


如果想要查出有哪条记录包含卡拉的。
1、用LIKE 语句 。


select * from a1 where str1 like '%卡拉%';

query result(1 records)

id str1
6 卡拉是条狗

2、用INSTR 函数。

select * from a1 where instr(str1,'卡拉') != 0;

query result(1 records)

id str1
6 卡拉是条狗
如果是中英文混合的记录,同样适合。

insert into a1(str1) values('我唉你,卡拉,wo ai ni,I love you');

query result(2 records)

id str1
6 卡拉是条狗
8 我唉你,卡拉,wo ai ni,I love you

这两条语句的效率是一样的。

explain select * from a1 where str1 like '%卡拉%';
explain select * from a1 where instr(str1,'卡拉') != 0;

query result(1 records)

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE a1 ALL (NULL) (NULL) (NULL) (NULL) 8 Using where



3、以前的那些所谓的加binary 来查询的,完全是因为编码不对所致,如果遇到中文查不到的话,应该立即检查你的
show variables like '%char%';
的执行结果。
或者说你的MYSQL版本太低的话建议升级到最新稳定版。
binary关键字只在区分大小写或者你要按二进制查询的时候有效。





select * from a1 where binary str1 like '%I love%';

query result(2 records)

id str1
4 I love your mind.
8 我唉你,卡拉,wo ai ni,I love you


select * from a1 where binary str1 like '%i love%';

(0 row(s)returned)

(0 ms taken)








本文转自 david_yeung 51CTO博客,原文链接:http://blog.51cto.com/yueliangdao0608/81402,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
数据库教程:项目4 MySQL数据表的检索总结
MySQL数据库 “数据表的检索总结” 习题示例,包含源码,能建立起对于数据表的检索的基本概念
55 0
【数据库原理及应用】MySQL数据表的检索
MySQL数据表的检索的基本语句
101 0
MySQL - 索引能够提升数据的检索速度
MySQL - 索引能够提升数据的检索速度
50 0
mysql数据库(7):表中检索信息(下)
mysql数据库(7):表中检索信息
69 0
mysql数据库(7):表中检索信息(上)
mysql数据库(7):表中检索信息
93 0
win7下PHP+MySQL+CoreSeek中文检索引擎配置
1.Windows下的coreseek安装测试 (64位win7旗舰版) 官方参考:http://www.coreseek.cn/products-install/install_on_windows/  安装条件: coreseek-3.
893 0
java202303java学习笔记第四十天mysql安装和启动2
java202303java学习笔记第四十天mysql安装和启动2
5 0
+关注
科技小能手
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
高效MySQL的N个习惯
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关镜像