oracle數據庫模糊查詢匹配多個字符串


一、查詢包含某些字段的記錄(包含其中一個就符合):

對需要匹配的字符串建一個表 KEY_TABLE

ID KEYWORD TYPE
1 字符串1 1
2 字符串2 1
3 字符串3 1

SELECT * FROM MAIN_TABLE mt ,KEY_TABLE s
WHERE mt.matching LIKE '%'||s.keyword||'%' (or)

二、 查詢不包含這些字段的記錄:

1、SELECT * FROM MAIN_TABLE mt 
WHERE  not regexp_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
FROM KEY_TABLE t GROUP BY t.type
) kt

WHERE  not regexp_like (mt.matching,kt.keyword)  and kt.type=1;

2、SELECT * FROM MAIN_TABLE mt 
WHERE mt.matching  not like '%字符串1%' and  mt.matching  not like '%字符串2%'  and mt.matching  not like '%字符串3%'; (效率比較高)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM