一条SQL语句完成对一列关键词的匹配
一条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语句完成对一列关键词的匹配相关推荐
- mysql数据库会同时执行sql吗_mysql 一次执行多条sql语句
最近要做一个软件升级,其中涉及到数据库表字段的变动(新增或删除或修改),所有的关于数据库的变动的sql语句都是存放在Sqlupdate.sql文件中,每次升级的时候都需要执行一次Sqlupdate.s ...
- 一条SQL语句在MySQL中是如何执行的
来源:http://t.cn/E6U9Z9T 概览 本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的. 一.mysql架 ...
- 52条SQL语句性能优化策略
本文会提到 52 条 SQL 语句性能优化策略. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引. 2.应尽量避免在 WHERE 子句中对字 ...
- 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL
PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL ...
- sql加上唯一索引后批量插入_阿里大佬总结的52条SQL语句性能优化策略,建议收藏...
你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 cnblogs.com/SimpleWu/p/9929043.html 推荐:h ...
- oracle多条sql语句常量,如何在Oracle中一次执行多条sql语句
有时我们需要一次性执行多条sql语句,而用来更新的sql是根据实际情况用代码拼出来的 解决方案是把sql拼成下面这种形式: begin update TB_VG set seq = 1, vessel ...
- 修改 decimal 默认值为0.00 sql_被经理邀请去“爬山”,只是因为我写错了一条SQL语句?...
作者:isysc1 链接:https://juejin.im/post/5f06a2156fb9a07e5f5180df 来源:掘金 前戏 SQL 写的妙,涨薪呱呱叫! 新来的实习生小杨写了一条 SQ ...
- 执行计划 分析一条sql语句的效率 mysql_MySQL中一条SQL语句的执行过程
MySQL中一条SQL语句的执行过程 发布时间:2018-11-24 18:35, 浏览次数:390 , 标签: MySQL SQL 查询语句的执行顺序: 1.客户端通过TCP连接发送连接请求到mys ...
- 解析MySQL基础架构及一条SQL语句的执行流程和流转
前言 本篇文章分析SQL语句在MySQL中的执行流程,包括SQL的查询在MySQL内部会怎么流转,SQL语句的更新是怎么完成的.在分析之前我们一起看看MySQL的基础架构,知道了 MySQL由那些组件 ...
最新文章
- 两个高频设计类面试题:如何设计HashMap和线程池
- Hibernate3 第一天
- python怎样把两个图画到一起_python实现两张图片拼接为一张图片并保存
- Tomcat4/5连接池的设置及简单应用示例
- 【Java】避免用户篡改查询结果的GUI显示的策略
- 信息学奥赛一本通(2072:【例2.15】歌手大奖赛)
- 开心的金明(洛谷-P1060)
- python进阶训练营百度网盘_(在线观看)【完结】私域流量实战训练营(百度网盘分享下载)...
- MySQL的sql_mode解析设置
- ROS学习笔记(三)—— 话题 topic详解
- A or B Equals C Gym - 101028C
- 只会写代码的程序员不是好程序员
- AI绘画怎么生成?这些软件帮助你实现
- 分解质因数 C语言实现
- Cocos技术派 | TS版属性面板定义高级用法
- 一个QQ空间的钓鱼盗号过程揭露,大家谨防上当
- 王者荣耀服务器 延迟高,王者荣耀30ms延迟怎么弄的 30ms延迟设置方法
- android怎样生成固定的aes密钥,关于android:如何更改AES 128的密钥数量
- 使用Squirrel连接Phoenix
- 3526-------团战可以输、提莫必须死 dfs做法