發現問題
在oracle中,in的最大條數是1000條,當超過1000條就會報錯:
oracle in長度限制的解決方法,將列轉為行 但是字符串又會有長度限制,所以參考方法二
方法一:
1
|
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
1
|
REGEXP_REPLACE(source_char, pattern [, replace_string [, position [, occurrence [, match_parameter ] ] ] ] ) |
source_char :需要進行處理的字符串
pattern :進行匹配的正則表達式
replace_string :替換的字符
position :從第幾個字符開始正則表達式匹配。(默認為1)
occurrence :標識第幾個匹配組
方法二:
1
|
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長度限制解決內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/wangwei775257173/article/details/112482236