MySQL单表多关键字模糊查询的实现

数据库 MySQL
如果需要实现在单表中对多字段进行多个关键字的模糊查询,应该如何实现呢?下文就将教您实现此功能的方法,供您参考学习。

MySQL单表多关键字模糊查询实现方法是很多人都非常想知道的一个问题,那么,究竟采用什么方法,才能实现MySQL单表多关键字模糊查询呢?

在最近的一个项目需要实现在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字段的默认长度

mysql中int数据类型长度的问题

MySQL中INSERT的一般用法

MySQL索引类型介绍

mysql添加删除主键的方法

 

 

 

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

2010-11-22 13:13:30

MySQL模糊查询

2010-11-24 10:35:34

MySQL单表多字段

2012-04-23 13:49:55

PHP技术

2010-10-29 16:41:12

Oracle模糊查询

2021-07-27 07:31:16

单例模式关键字

2011-06-27 17:32:20

2010-10-15 14:39:55

MySQL单表大小

2009-07-22 11:27:36

iBATIS模糊查询

2011-07-29 11:20:51

MySQL数据库字段重复

2011-08-24 17:23:10

2010-11-18 16:27:37

2021-12-22 06:56:06

MySQCrudjs

2013-12-16 10:20:48

MySQL数据库

2010-09-25 16:42:45

sql语句

2010-10-21 14:43:46

SQL Server查

2010-11-22 14:05:53

MySQL单表大小

2009-06-04 09:15:46

2010-11-23 13:51:55

MySQL数据表

2010-10-27 14:41:45

Oracle查询用户表

2010-11-22 15:56:34

Mysql多表查询
点赞
收藏

51CTO技术栈公众号