Oracle拆分字符串函数

1.函数可以将“目标字符串”以“指定字符串”进行拆分,并通过表结构返回结果。代码如下:

create or replace function FUNC_SPLIT(p_list varchar2,
                                      p_sep  varchar2 in varchar2)
  return type_split
  pipelined is
  l_idx  pls_integer;
  v_list varchar2(4000) := p_list;
begin
  loop
    l_idx := instr(v_list, p_sep);
    if l_idx > 0 then
      pipe row(substr(v_list, 1, l_idx - 1));
      v_list := substr(v_list, l_idx + length(p_sep));
    else
      pipe row(v_list);
      exit;
    end if;
  end loop;
  return;
end FUNC_SPLIT;

如果字符串是逗号隔开的,参数p_sep可以默认写成:p_sep varchar2 := ‘,‘;

2.创建返回类型

CREATE OR REPLACE TYPE "TYPE_SPLIT"   as table of varchar2(4000)

3.使用说明

select * from table(func_split(Hello,split!,,));

效果图:技术分享

select a.column_value v1,b.column_value v2 from 
(select * from (select rownum rn,t.* from table(func_split(Hello,Cyrus Joyce,,)) t)) a,
(select * from (select rownum rn,t.* from table(func_split(Hello,Cyrus Joyce,,)) t)) b
where a.rn=1 and b.rn=2

效果图:技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。