oracle in長度限制的兩個快速解決方法

發現問題

在oracle中,in的最大條數是1000條,當超過1000條就會報錯:

oracle in長度限制的解決方法,將列轉為行 但是字符串又會有長度限制,所以參考方法二

方法一:

SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,LEVEL) AS STR FROM DUAL CONNECT BY LEVEL <= LENGTH('17,20,23')-LENGTH(REGEXP_REPLACE('17,20,23',',','')) + 1

這裡還有一個函數:REGEXP_REPLACE

REGEXP_REPLACE(source_char, pattern [, replace_string [, position [, occurrence [, match_parameter ] ] ] ] )

source_char :需要進行處理的字符串

pattern :進行匹配的正則表達式

replace_string :替換的字符

position :從第幾個字符開始正則表達式匹配。(默認為1)

occurrence :標識第幾個匹配組

方法二:

SELECT regexp_replace(Supplier, '[^0-9]') cc FROM (select '1' a1, '2' a2, '3' a3 from dual) T UNPIVOT(org_id FOR Supplier IN(a1,a2,a3)) P

總結

到此這篇關於oracle in長度限制的兩個快速解決方法的文章就介紹到這瞭,更多相關oracle in長度限制解決內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: