在我們平時的處理過程總往往會遇到要把乙個字串拆分成乙個陣列,加在'in'後面作為條件,現提供兩種方似乎。
1- 正規表示式分割字串
select regexp_substr('2,3,4,5', '[^,]+', 1, l_count) stype from dual,
(select level l_count from dual connect by level <= length('2,3,4,5')) ;
2- 用replace實現
--處理公用條件
v_custnos := '''' || replace (p_custno, ',', ''',''') || '''';
--組裝sql
v_accosql :=
'select c_custno,c_fundacco,c_custname,d_date,d_cdate,null c_fundcode,
c_agencyno,c_businflag,fget_businflag(c_businflag) c_businname,0 f_balance,0 f_shares,
0 f_confirmbalance,0 f_confirmshares,0 f_netvalue,
c_status,c_cause,c_tradeacco,''1'' as c_dataflag,
l_serialno,null c_cserialno,null c_netno,null c_tano,null l_proserialno,null c_profitclass
from taccorequest t where c_custno in ('
|| v_custnos
|| ')':
3- --以逗號作為分隔符
select substr('22,2,3',1,instr('22,2,3',',',1,1)-1) from dual; --擷取第乙個
select substr('22,2,3',instr('22,2,3',',',1,1)+1,(instr('22,2,3',',',1,2)-instr('22,2,3',',',1,1)-1)) from dual; --擷取第二個
select substr('22,2,3',instr('22,2,3',',',1,2)+1,(length('22,2,3')-instr('22,2,3',',',1,2))) from dual; --擷取第三個
Oracle擷取字串
今天遇到的問題是 我需要乙個201802281530時間格式的字串 即年月日時分 但是讀取的oracle資料庫裡只有2018 02 28 15 30 00這種格式的char型別。由於程式大都是直接呼叫其他方法,不方便在程式內操作,只能在oracle讀取時解決問題。解決後的最終sql 為 substr...
oracle擷取字串
格式1 substr string string,int a,int b 格式2 substr string string,int a 解釋 格式1 1 string 需要擷取的字串 2 a 擷取字串的開始位置 注 當a等於0或1時,都是從第一位開始擷取 3 b 要擷取的字串的長度 格式21 str...
oracle中擷取字串
substring 返回字元 binary text 或 image 表示式的一部分。有關可與該函式一起使用的有效 microsoft sql server 資料型別的更多資訊,請參見資料型別。語法 substring expression start length 引數 expression 是字...