mysql多字段多值like匹配简化

like 匹配 mysql 多字段 多值 简化 key titleLIKE ORsubtitleLIKE ORtagLIKE 编程进阶笔记
发布日期 2022-09-01 更新日期 2022-09-01 阅读次数 104 文章字数 507

一个关键字,拆分,查询

        $key = $param['key'] ?: "";
        $key = str_replace(" ","|",$key);

这样你就可以得到多个 key,以便更好的 like,接下来,试试快速的匹配多个字段:

SELECT * FROM article WHERE 
CONCAT_WS(" ", title, subtitle, tag) REGEXP "车|摩托|红色|美国|2006"

成功地实现了 15 个 like, 也就是3个字段,每个字段 like了5个关键字。

它相当于:

SELECT * FROM article WHERE 
(
  title LIKE "%车%" 
  OR subtitle LIKE "%车%" 
  OR tag LIKE "%车%" 
) OR (
  title LIKE "%摩托%" 
  OR subtitle LIKE "%摩托%" 
  OR tag LIKE "%摩托%" 
) OR (
  title LIKE "%红色%" 
  OR subtitle LIKE "%红色%" 
  OR tag LIKE "%红色%" 
) OR (
  title LIKE "%美国%" 
  OR subtitle LIKE "%美国%" 
  OR tag LIKE "%美国%" 
) OR (
  title LIKE "%2006%" 
  OR subtitle LIKE "%2006%" 
  OR tag LIKE "%2006%" 
)

在实际代码中,它就是:

        //关键字
        if($key){
            $where .= ' AND CONCAT_WS(" ", `title`, `body`) REGEXP "'.$key.'"';
        }

文章作者: 朱丰华

文章链接: https://smart.52dixiaowo.com/blog/post-32.html

版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。

like 匹配 mysql 多字段 多值 简化 key titleLIKE ORsubtitleLIKE ORtagLIKE

发表评论

相关推荐
朱丰华   |   1年前   |   sql · mysql

mysql Timestamp或dateTime格式筛选

126    评论    点赞
朱丰华   |   1年前   |   正则 · 表达

正则表达式,实现if...then...else

113    评论    点赞
朱丰华   |   1年前   |   mysql · 变量 · sql

MySQL实现行号-自定义变量

113    评论    点赞
朱丰华   |   1年前   |   变量 · mysql · sql · 用户

MySQL用户自定义变量

95    评论    点赞
朱丰华   |   1年前   |   sql · php

PHP如何使用PDO批量执行SQL?

115    评论    点赞
朱丰华   |   1年前   |   sed · 文件

Shell 指定行处理head、tail、sed

156    评论    点赞
朱丰华   |   1年前   |   linux · 内容

linux环境下,对于一个大文件,如何查看其中某行的内容

68    评论    点赞
朱丰华   |   1年前   |   php · 字符 · 正则

php正则表达式原生字符

85    评论    点赞
朱丰华   |   1年前   |   sql · mysql

mysql GROUP_CONCAT 顺序排序

84    评论    点赞
朱丰华   |   1年前   |   linux · 文件

linux递归统计文件夹大小、du命令_Linux du命令:查看文件夹和文件的磁盘占用情况

193    评论    点赞
朱丰华   |   1年前   |   linux · php

linux下编写、编译php扩展

150    评论    点赞
朱丰华   |   1年前   |   python

python pip离线安装某个包

130    评论    点赞
朱丰华   |   1年前   |   mysql

MySQL 报错 Packets out of order

113    评论    点赞
朱丰华   |   1年前   |   mysql

MySQL获取上一篇下一篇文章

117    评论    点赞
朱丰华   |   1年前   |   mysql

MySQL的in排序问题

152    评论    点赞
朱丰华   |   1年前   |   mysql · 转换 · 数字

MySQL字符串转数字,比较数字大小

112    评论    点赞
朱丰华   |   1年前   |   mysql

MySQL中的 ` 有什么用?

136    评论    点赞
朱丰华   |   1年前   |   mysql

mysql按进行中,即将开始,已结束排序,自定义字段值排序

158    评论    点赞
朱丰华   |   1年前   |   字符 · 全文 · 检索 · 搜索 · mysql · 单个 · 搜素 · 匹配 · 使用 · 分割

mysql全文检索单个字符搜素

89    评论    点赞
朱丰华   |   1年前   |   店铺 · 商品 · mysql · like · 查询 · id · store · FROM · SELECT · WHERE

mysql like查询店铺和商品

79    评论    点赞
{{item.author_name}}   |   {{new Date(item.date*1000).log()}}   |   {{it}} ·

{{item.title}}

{{item.uv}}    评论    点赞