ORACLE IN 後跟 引數字串的處理方法

2022-03-12 20:17:36 字數 873 閱讀 7456

今天寫奈及利亞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)

ORACLE in 字串,字串,字串

因為傳進來的引數是 字串,字串,字串,要實現in 字串,字串,字串 select from htl price p where p.hotel id 30073328 and p.able sale date between to date 2009 03 27 yyyy mm dd and to ...

Oracle IN 傳遞字串引數查詢失效

在寫儲存過程中有如下 for a in select a.svo no,a.audit no,a.order id from tt pi model rel a loop select count 1 into v flag from tt pi order where pi id in a.ord...

數字轉字串 字串轉數字

數字轉字串 這裡首先用到乙個陣列逆置函式如下 void reverse char arr 逆置 for p arr p arr p 將arr陣列逆置 因為將乙個數字轉成字串,若果是從右往左依次獲得,操作較容易,所以以此得到的字串是數字的逆序字串,所以要逆置,才可得到順序 如下 void myitoa...