【ORACLE】IN 后跟&參數字符串的處理方法


今天寫尼日利亞BOSS,數據修復腳本時遇到一個問題, 參數字符串無法再IN中使用,例如:想要完成下面的查詢
select * From customeren c where c.customercodestr in (&CODE);
 
最先想到的是用regexp_replace來拼接字符串,將中間符號替換成‘,’ 以便后續拼接
 
SELECT '''' || regexp_replace('TTP0001;TTP0002;TTP0003', ';', ''',''') || '''' FROM dual;
測試了下結果很滿意: 'TTP0001','TTP0002','TTP0003' 
 
可是執行時,卻還是不行查詢不到任何結果,
select *
         From customeren c
        where c.customercodestr in
              (SELECT '''' || regexp_replace('TTP0001;TTP0002;TTP0003',
                                             ';',
                                             ''',''') || ''''
                 FROM dual)
 
猜測主要原因是, IN 后面的括號內,不能用字符串拼接,括號內並不是一個字符串
 
最后通過字符串截取拼接實現: 示列SQL 如下 
select *
  From customeren c
 where c.customercodestr in
       (SELECT REGEXP_SUBSTR('&客戶編碼', '[^;]+', 1, rownum)
          FROM DUAL
        CONNECT BY ROWNUM <=
                   LENGTH('&客戶編碼') - LENGTH(REPLACE('&客戶編碼', ';', '')) + 1)


免責聲明!

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



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