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

 更新时间:2011年03月20日 19:15:47   作者:  
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通过DQL实现对数据库数据的基本查询

    MySQL通过DQL实现对数据库数据的基本查询

    这篇文章给大家介绍了MySQL如何通过DQL进行数据库数据的基本查询,文中通过代码示例和图文结合介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • MySQL统计时间差的平均值方式

    MySQL统计时间差的平均值方式

    这篇文章主要介绍了MySQL统计时间差的平均值方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • MySQL Select语句是如何执行的

    MySQL Select语句是如何执行的

    这篇文章主要介绍了MySQL Select语句是如何执行的,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下
    2020-11-11
  • linux(Centos7)下安装mysql8.0.18的教程图解

    linux(Centos7)下安装mysql8.0.18的教程图解

    这篇文章主要介绍了linux(Centos7)安装mysql8.0.18的教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • MySQL中的alter table命令的基本使用方法及提速优化

    MySQL中的alter table命令的基本使用方法及提速优化

    这篇文章主要介绍了MySQL中的alter table命令的基本使用方法及提速优化的方法,包括ALTER COLUMN的使用等等,需要的朋友可以参考下
    2015-11-11
  • Mysql的列修改成行并显示数据的简单实现

    Mysql的列修改成行并显示数据的简单实现

    这篇文章主要介绍了Mysql的列修改成行并显示数据的简单实现,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • MySQL如何匹配字符串函数

    MySQL如何匹配字符串函数

    MySQL提供多个字符串匹配函数,如like、locate、position、instr和find_in_set,其中locate、position、instr和find_in_set均返回字符在字段中的索引(如果包含),否则返回0,特别地,find_in_set适用于字段为数组的情况
    2024-11-11
  • 在 CentOS 7 下如何使用 Ansible Playbook 实现 MySQL 8.0.34 的二进制安装

    在 CentOS 7 下如何使用 Ansible Playbook 实现 MySQL 8.0.34 的

    要在 CentOS 7 下使用 Ansible Playbook 实现 MySQL 8.0.34 的二进制安装,需要先下载 MySQL 8.0.34 的二进制包,并将其上传至目标服务器,对MySQL 8.0.34 二进制安装过程感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • 深入解析MySQL双写缓冲区

    深入解析MySQL双写缓冲区

    双写缓冲区是MySQL中的一种优化方式,主要用于提高数据的写性能,本文将介绍Doublewrite Buffer的原理和应用,帮助读者深入理解其如何提高MySQL的数据可靠性并防止可能的数据损坏,感兴趣的可以了解一下
    2024-02-02
  • MySQL千万级数据的大表优化解决方案

    MySQL千万级数据的大表优化解决方案

    mysql数据库中的表数据量几千万后,查询速度会很慢,日常各种卡慢,严重影响使用体验。在考虑升级数据库或者换用大数据解决方案前,必须优化现有mysql数据库表设计和sql语句。
    2022-11-11

最新评论