oracle 分割字串 擷取字串

2021-06-07 13:57:30 字數 1200 閱讀 6278

在我們平時的處理過程總往往會遇到要把乙個字串拆分成乙個陣列,加在'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 是字...