like模糊多条件查询

一: like

最基本的实现模糊匹配的语句,但一次只能匹配一种候选模式(like "%content%"),若要对多个候选进行模糊匹配,则需要写多次like,然后以or连接,但是当候选数目过多时,则该种方式明显不适用;

 

二.REGEXP_LIKE

与like的作用类似,以正则的方式进行匹配,支持多条件同时查询;

 

select col from table t where REGEXP_LIKE(t.col,'条件1|条件2')

该方法有点缺点就是后面的正则表达式长度有限制,如果条件没有那么多也可以考虑使用这种方式;

三.INSTR函数

使用instr函数这种方法可以解决大量候选条件的情况,方法如下:

1.首先建立一个候选条件的临时表B,将所有需要匹配的字段都加入这个临时表中;

2.使用联表查询,假设表A中某列需要进行多条件模糊匹配:

select ta.col from A ta,B tb where instr(ta.col,tb.col) > 0

使用这种方法即可解决需要同时模糊匹配大量候选条件的情况,需要注意的是如果候选条件中有重合的数据,如 "abc"和"ab"

,此时使用"abcd"去匹配会出现两条同样的结果,这时候只需要对唯一ID进行distince筛选即可。

select NVL(SUM(NVL(DKYE,0)),0) from SRPT_WTDKB t where REGEXP_LIKE(t.TXHYLX,'G|003024')

AND RQ='20190630' AND BZ='CNY' AND DKYE>0

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值