教您如何实现MySQL单表多字段模糊查询

数据库 MySQL
如何才能实现在单表中对多字段进行多个关键字的模糊查询呢?下文就教您一个实现该功能的方法,供您参考借鉴。

MySQL单表多字段模糊查询的是指实现在单表中对多字段进行多个关键字的模糊查询,但这数个关键字并不一定都存在于某个字段。

例如现有table表,其中有title,tag,description三个字段,分别记录一条资料的标题,标签和介绍。然后根据用户输入的查询请求,将输入的字串通过空格分割为多个关键字,再在这三个字段中查询包含这些关键字的记录。

可目前遇到的问题是,这些关键字是可能存在于三个字段中的任意一个或者多个,但又要求三个字段必须包含所有的关键词。如果分别对每个字段进行模糊匹配,是没法实现所需的要求,由此想到两种方法:

在插入记录的同时,将需要进行MySQL单表多字段模糊查询的字段合并成一个字串并加入到一个新的字段中,然后对这个新字段进行模糊查询。
使用全文检索,但是这需要用到中文分词或者将汉字转化为拼音(拆分汉字是不可行的,MySQL默认FT最小字节为4),而且并不利于今后的维护。
《MySQL权威指南》中CONCAT的使用方法,在书中的对CONCAT的描述是:

CONCAT(str1,str2,…)
返回值:由全体出入参数合并在一起而得到的字符串。只要输入的参数中有NULL值,就返回NULL。CONCAT允许只有一个输入参数的情况。

因此,MySQL单表多字段模糊查询可以通过下面这个SQL查询实现
SELECT * FROM `magazine` WHERE CONCAT(`title`,`tag`,`description`) LIKE ‘%关键字%’
 

 

 

【编辑推荐】

mysql快速建表的方法

深入研究MySQL删除多表数据

多个MySQL表结果集组合

MySQL分表处理的实现方法

MySQL复制表数据到新表的方法

责任编辑:段燃 来源: 互联网
相关推荐

2010-11-22 13:13:30

MySQL模糊查询

2010-11-18 16:27:37

2010-11-25 14:49:08

MySQL查询最大值

2010-10-08 10:37:00

MYSQL添加新字段

2010-11-25 14:56:46

MySQL全文查询

2010-10-08 15:37:21

MySQL单表

2010-09-26 13:56:43

SQL远程查询

2010-11-25 10:44:30

2010-09-07 09:45:48

SQL语句

2010-10-14 10:28:18

MySQL动态视图

2010-11-22 16:05:53

MySQL多表插入

2010-10-13 16:49:56

MySql查询时间段

2010-10-13 09:37:48

MYSQL修改表结构

2010-11-03 11:30:56

DB2表空间扩容

2018-07-25 18:40:06

数据库MySQL多字段过滤

2010-11-25 13:45:07

MySQL查询语句

2010-11-23 16:04:40

MySQL数据表

2010-10-26 10:48:16

ORACLE备份

2010-10-12 14:53:31

mysql索引优化

2010-09-28 11:28:40

SQL字段属性
点赞
收藏

51CTO技术栈公众号