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

时间:2024-01-12 18:12:14 

在最近的一个项目需要实现在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 ‘%关键字%'

标签:关键字,模糊查询
0
投稿

猜你喜欢

  • Go语言使用defer+recover解决panic导致程序崩溃的问题

    2024-01-30 06:29:18
  • HTTP头信息总结

    2022-10-06 16:09:40
  • perl AnyEvent简单介绍和入门知识

    2022-09-22 03:10:50
  • sql server 复制表从一个数据库到另一个数据库

    2024-01-16 17:53:57
  • 彻底理解Python中的yield关键字

    2021-02-23 16:31:42
  • vue实现鼠标滑动展示tab栏切换

    2023-07-02 16:38:05
  • oracle12C安装步骤(图文详解)

    2023-07-15 14:19:34
  • Python 连接字符串(join %)

    2021-01-13 23:30:46
  • Python基于mediainfo批量重命名图片文件

    2021-08-20 11:31:30
  • Python+OCR实现文档解析的示例代码

    2023-11-22 02:34:19
  • 如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱

    2022-07-03 20:51:47
  • OpenCV计算平均值cv::mean实例代码

    2023-06-19 10:26:02
  • js验证表单(form)中的单选(radio)值

    2008-03-18 13:23:00
  • 78行Python代码实现现微信撤回消息功能

    2021-12-17 17:41:19
  • Python如何发送与接收大型数组

    2022-07-26 06:54:54
  • python脚本调用iftop 统计业务应用流量的思路详解

    2022-02-07 02:37:12
  • Web标准学习:CSS样式书写风格

    2008-03-25 09:37:00
  • 对python numpy.array插入一行或一列的方法详解

    2022-12-08 15:44:07
  • 详解使用Nginx和uWSGI配置Python的web项目的方法

    2021-06-28 00:24:47
  • mysql回表致索引失效案例讲解

    2024-01-21 01:28:48
  • asp之家 网络编程 m.aspxhome.com