一条SQL语句完成对一列关键词的匹配

先放重点!
核心语句: select * from 表1 t1 join 表2 t2 on t1.待匹配字段 like concat( ‘%’, t2.关键词列, ‘%’ );

背景:
我有一列商品名称,我需要根据几十个关键词从商品名称里匹配出我需要的部分

痛点
当我们需要对一个列做根据几十个或者更多关键词筛选时,因为是关键词匹配,没办法直接用 in 的方式,因为在 in 里面不支持识别%通配符,所以核心还是要回到like身上;
如果我只写like:
select * from 表1 where 待匹配字段 like '%关键词1%;
那我至少需要写或者excel生成几十条SQL语句,然后每条SQL语句都是独立的结果,还需要用union all或者insert into到中间表来完成结果合并。
虽然直接用excel生成几十条SQL语句能解决问题,但是毕竟看起来不够高大上,而且至少需要三步才能完成。

语句讲解
核心语句: select * from 表1 t1 join 表2 t2 on t1.待匹配字段 like concat( ‘%’, t2.关键词列, ‘%’ );
1.首先我们先看没有concat函数的情况:
select * from 表1 t1 join 表2 t2 on t1.待匹配字段 like t2.关键词列;
表1与表2进行join内连接(这里具体看自己需求,也可以用左连接把没有匹配上关键词的结果一起做返回),在连接的时候通过on后面的部分进行关联。

2.如果没有在on里用过like的话可能不太理解。
这里就是先取表1的待匹配字段的第一项与表2的关键词字段里的每个关键词做一次like判断,如果like成功,则返回这条记录;然后依次取表1的待匹配字段的下一项。

3.把上面两点理解以后,一起就差最后一步了,我们需要让like做判断的时候成功,因此这里用一个concat函数,因为它返回出来的其实就是一个字符串,与我们手输 ‘%关键词1%’ 是一个道理。所以这里用concat( ‘%’, t2.关键词列, ‘%’ )给关键词前后补上一个百分号。(需要注意的一点是concat遇到null时会直接返回null。)

一条SQL语句完成对一列关键词的匹配相关推荐

  1. mysql数据库会同时执行sql吗_mysql 一次执行多条sql语句

    最近要做一个软件升级,其中涉及到数据库表字段的变动(新增或删除或修改),所有的关于数据库的变动的sql语句都是存放在Sqlupdate.sql文件中,每次升级的时候都需要执行一次Sqlupdate.s ...

  2. 一条SQL语句在MySQL中是如何执行的

    来源:http://t.cn/E6U9Z9T 概览 本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的. 一.mysql架 ...

  3. 52条SQL语句性能优化策略

    本文会提到 52 条 SQL 语句性能优化策略. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引. 2.应尽量避免在 WHERE 子句中对字 ...

  4. 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL ...

  5. sql加上唯一索引后批量插入_阿里大佬总结的52条SQL语句性能优化策略,建议收藏...

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 cnblogs.com/SimpleWu/p/9929043.html 推荐:h ...

  6. oracle多条sql语句常量,如何在Oracle中一次执行多条sql语句

    有时我们需要一次性执行多条sql语句,而用来更新的sql是根据实际情况用代码拼出来的 解决方案是把sql拼成下面这种形式: begin update TB_VG set seq = 1, vessel ...

  7. 修改 decimal 默认值为0.00 sql_被经理邀请去“爬山”,只是因为我写错了一条SQL语句?...

    作者:isysc1 链接:https://juejin.im/post/5f06a2156fb9a07e5f5180df 来源:掘金 前戏 SQL 写的妙,涨薪呱呱叫! 新来的实习生小杨写了一条 SQ ...

  8. 执行计划 分析一条sql语句的效率 mysql_MySQL中一条SQL语句的执行过程

    MySQL中一条SQL语句的执行过程 发布时间:2018-11-24 18:35, 浏览次数:390 , 标签: MySQL SQL 查询语句的执行顺序: 1.客户端通过TCP连接发送连接请求到mys ...

  9. 解析MySQL基础架构及一条SQL语句的执行流程和流转

    前言 本篇文章分析SQL语句在MySQL中的执行流程,包括SQL的查询在MySQL内部会怎么流转,SQL语句的更新是怎么完成的.在分析之前我们一起看看MySQL的基础架构,知道了 MySQL由那些组件 ...

最新文章

  1. 两个高频设计类面试题:如何设计HashMap和线程池
  2. Hibernate3 第一天
  3. python怎样把两个图画到一起_python实现两张图片拼接为一张图片并保存
  4. Tomcat4/5连接池的设置及简单应用示例
  5. 【Java】避免用户篡改查询结果的GUI显示的策略
  6. 信息学奥赛一本通(2072:【例2.15】歌手大奖赛)
  7. 开心的金明(洛谷-P1060)
  8. python进阶训练营百度网盘_(在线观看)【完结】私域流量实战训练营(百度网盘分享下载)...
  9. MySQL的sql_mode解析设置
  10. ROS学习笔记(三)—— 话题 topic详解
  11. A or B Equals C Gym - 101028C
  12. 只会写代码的程序员不是好程序员
  13. AI绘画怎么生成?这些软件帮助你实现
  14. 分解质因数 C语言实现
  15. Cocos技术派 | TS版属性面板定义高级用法
  16. 一个QQ空间的钓鱼盗号过程揭露,大家谨防上当
  17. 王者荣耀服务器 延迟高,王者荣耀30ms延迟怎么弄的 30ms延迟设置方法
  18. android怎样生成固定的aes密钥,关于android:如何更改AES 128的密钥数量
  19. 使用Squirrel连接Phoenix
  20. 3526-------团战可以输、提莫必须死 dfs做法

热门文章

  1. java下载网络文件+Illegal character in path at index 135错误解决方法
  2. NetBox在Win10下运行报错
  3. 记一则SQL 数据库状态(可疑)(紧急)解决方案
  4. 数据库产品-易用性问题
  5. 计算机特色的小游戏,宅家必备小游戏-steam小型游戏推荐
  6. mysql 数据库 ui查询_mysql数据库查询语句
  7. 移动平均法 指数平滑法
  8. 国内外MCU厂商及产品线最全盘点
  9. python连接teradata_使用Teradata模块将Python与Teradata连接
  10. Wireshark抓包的妙用