Oracle函數,按分隔符截取字符串 [問題點數

今天因工作需要,寫了一個小函數,按分隔符截取字符串的,分享出來,希望有需要的朋友能用到。

功能實例:  substrbysep('aaa,bb,ccccc,ddd,vvv',',',3)返回結果 'ccccc'.

函數:

create or replace function substrbysep(sourceString    varchar2,
                                       destString      varchar2,
                                       appearPosition  number)
  return varchar2 is
  substring varchar2(255);
  
  --作者:Alex Liu
  --功能:按分隔符截取字符串
  --參數:1、原始字符串;2、分隔符;3、截取第幾段
  
begin
  substring := substr(destString || sourceString || destString,
                      instr(destString || sourceString || destString,
                            destString,
                            1,
                            appearPosition) + 1,
                      instr(destString || sourceString || destString,
                            destString,
                            1,
                            appearPosition + 1) -
                      instr(destString || sourceString || destString,
                            destString,
                            1,
                            appearPosition) - 1);
  return(substring);
end substrbysep;

/



另外一種方法正則表達式

SQL code
用正則表達式,一步就出來了
select regexp_substr('aaa,bb,ccccc,ddd,vvv','[^,]+',1,3)
from dual
;
REGEX
-----
ccccc

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章