在最近的一个项目需要实现在MySQL单表多关键字模糊查询,但这数个关键字并不一定都存在于某个字段。例如现有table表,其中有title,tag,description三个字段,分别记录一条资料的标题,标签和介绍。然后根据用户输入的查询请求,将输入的字串通过空格分割为多个关键字,再在这三个字段中查询包含这些关键字的记录。
可目前遇到的问题是,这些关键字是可能存在于三个字段中的任意一个或者多个,但又要求三个字段必须包含所有的关键词。如果分别对每个字段进行模糊匹配,是没法实现所需的要求,由此想到两种方法:
在插入记录的同时,将需要进行多字段模糊查询的字段合并成一个字串并加入到一个新的字段中,然后对这个新字段进行模糊查询。 使用全文检索,但是这需要用到中文分词或者将汉字转化为拼音(拆分汉字是不可行的,MySQL默认FT最小字节为4),而且并不利于今后的维护。
在网上爬了两天,对此问题的处理都没有找到满意的解决方法,最后在《MySQL权威指南》中翻到了CONCAT的使用方法,在书中的对CONCAT的描述是:
CONCAT(str1,str2,…)
返回值:由全体出入参数合并在一起而得到的字符串。只要输入的参数中有NULL值,就返回NULL。CONCAT允许只有一个输入参数的情况。
因此,MySQL单表多关键字模糊查询可以通过下面这个SQL查询实现
SELECT * FROM `magazine` WHERE CONCAT(`title`,`tag`,`description`) LIKE ‘%关键字%'
MySQL单表多关键字模糊查询的实现方法
2019-11-15 15:16mysql教程网 Mysql
MySQL单表多关键字模糊查询实现方法是很多人都非常想知道的一个问题,那么,究竟采用什么方法,才能实现MySQL单表多关键字模糊查询呢?
延伸 · 阅读
- 2019-11-15mysql -参数thread_cache_size优化方法 小结
- 2019-11-15Can't connect to MySQL server on localhost (10061)解决方法
- 2019-11-15两大步骤教您开启MySQL 数据库远程登陆帐号的方
- 2019-11-15一个单引号引发的MYSQL性能问题分析
- 2019-11-15MySQL数据库十大优化技巧
- 2019-11-15MySQL数据库优化经验详谈(服务器普通配置)
精彩推荐
- Mysql
RHEL7.5下mysql 8.0.11安装教程
这篇文章主要为大家详细介绍了RHEL7.5下mysql 8.0.11安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...
- Mysql
mysql中的“money”类型说明
mysql没有money类型 sql server才有money类型 ...
- Mysql
MySQL Replace INTO的使用
今天DST里面有个插件作者问我关于Replace INTO和INSERT INTO的区别,我和他说晚上上我的blog看吧,那时候还在忙,现在从MYSQL手册里找了点东西,MYSQL手册里说REPLACE...
- Mysql
linux下mysql自动备份脚本代码
mysql是以mysql用户身份运行的,对/home /mybackup不可写也会失败 ...
- Mysql
mysql 获取今天、昨天0点时间戳的实例
今天小编就为大家分享一篇mysql 获取今天、昨天0点时间戳的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...
- Mysql
使用JDBC连接Mysql数据库会出现的问题总结
这篇文章主要给大家介绍了关于使用JDBC连接Mysql数据库会出现的问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...
- Mysql
Mysql数据库名和表名在不同系统下的大小写敏感问题
在 MySQL 中,数据库和表对应于那些目录下的目录和文件。因而,操作系统的敏感性决定数据库和表命名的大小写敏感。 ...
- Mysql
mysql中提高Order by语句查询效率的两个思路分析
在MySQL数据库中,Order by语句的使用频率是比较高的。但是众所周知,在使用这个语句时,往往会降低数据查询的性能。 ...