Contents

Oracle WHERE IN 條件塞入超過 500 筆查詢條件方法

最近維運有時有超過 500 筆資料
需要在 SQL 指令區查詢
但是把多千筆資料拆開也是很耗時
以固定行數切割文字檔案方法 | 程式狂想筆記
先前有研究這個方法,可以快速切分
但直接查詢全部還是最快

暫存表

正式環境無法使用

神奇大法

1
2
3
4
5
6
with t as 
(
    select (column_value).getnumberval() Codes from xmltable('1,2,3,4,5')
)
SELECT * FROM t
WHERE NOT EXISTS (SELECT 1 FROM M_ITEMS M WHERE codes = M.ITEM_CODE);

1
2
3
4
5
6
with t as 
(
    select (column_value).getstringval() Codes from xmltable('"A","B","C"')
)
SELECT * FROM t
WHERE NOT EXISTS (SELECT 1 FROM M_ITEMS M WHERE codes = M.ITEM_CODE);

主要重點是 select (column_value).getnumberval() Codes from xmltable('1,2,3,4,5')

參考: sql - Oracle- create a temporary resultset for use in a query - Stack Overflow

2021-03-13

Oracle IN 可放超過1000查詢條件方法

雖然要手動組

1
select * from table where (1,ID)  in ( (1,0001),(1,0002)... (1,1999) )

參考:oracle 1000 in clause limit @ 阿朗的部落格 :: 痞客邦 ::