Oracle下实现同时满足多个字段的模糊匹配

1. like

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

2.REGEXP_LIKE

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

select col from table t where REGEXP_LIKE(t.col,'条件1|条件2')
该方法有点缺点就是后面的正则表达式长度有限制,如果条件没有那么多也可以考虑使用这种方式;

3.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筛选即可。


展开阅读全文

没有更多推荐了,返回首页