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

你可能感兴趣的:(Oracle函数,按分隔符截取字符串 [问题点数)