一、查询包含某些字段的记录(包含其中一个就符合):
对需要匹配的字符串建一个表 KEY_TABLE
SELECT * FROM MAIN_TABLE mt ,KEY_TABLE s
WHERE mt.matching LIKE '%'||s.keyword||'%' (or)
二、 查询不包含这些字段的记录:
1、SELECT * FROM MAIN_TABLE mt
WHERE notregexp_like (mt.matching,'字符串1|字符串2|字符串3');
(也可以利用列转行函数:
SELECT * FROM MAIN_TABLE mt ,(SELECT t.type,listagg(t.keyword,'|') WITHIN GROUP(ORDER BY t.type) AS allkey
FROMKEY_TABLEtGROUP BY t.type) kt
WHEREnotregexp_like (mt.matching,kt.keyword) and kt.type=1;
)
2、SELECT * FROM MAIN_TABLE mt
WHERE mt.matchingnotlike '%字符串1%' andmt.matchingnotlike '%字符串2%' andmt.matchingnotlike '%字符串3%'; (效率比较高)