Oracle按指定字符拆分字符串-split函数

方法一

拆分效果


创建自定义数组类型

create or replace type strArray as table of varchar2(4020)

创建拆分函数

--此方法只能使用英文半角逗号(,)

create or replace function f_split(instr IN VARCHAR2) return strArray

as

  l_tablen BINARY_INTEGER;

  l_tab    DBMS_UTILITY.uncl_array;

  l_ret strArray:=strArray();

BEGIN

  DBMS_UTILITY.comma_to_table(instr, l_tablen, l_tab);

  FOR i IN 1 .. l_tablen LOOP

    l_ret.EXTEND(1);

    l_ret(i):=l_tab(i);

  END LOOP;

  return l_ret;

END;

函数调用

select t.column_value as value from table(f_split('a,b,付')) t;

方法二

拆分效果


创建自定义数组类型

create or replace type strArray as table of varchar2(4020)

创建拆分函数

CREATE OR REPLACE FUNCTION f_split(p_str IN VARCHAR2, p_delimiter IN VARCHAR2)

      RETURN strArray IS

      TYPE ret_cur IS REF CURSOR;

      ret_cur1 ret_cur;

      g_str strarray:=strarray();

      l_sql varchar2(500):='';

    BEGIN

      l_sql :='SELECT REGEXP_SUBSTR ('''||p_str||''',''[^'||p_delimiter||']+'',1,LEVEL) as valuesa

                FROM DUAL

                CONNECT BY REGEXP_SUBSTR ('''||p_str||''',''[^'||p_delimiter||']+'',1,LEVEL) IS NOT NULL';


      OPEN ret_cur1 FOR l_sql ;

      FETCH ret_cur1 BULK COLLECT INTO g_str;

      CLOSE ret_cur1;

      RETURN g_str;

    END f_split;

函数调用

select * from table(f_split('abc$d$e$','$') );

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 有人说,学英语在国内也没有那个语言环境啊! 也有人说,在国内压根也没有那个学习环境啊! 为什么? 你知道现在大学生...
    JasonEnglish阅读 286评论 0赞 0
  • 要看就要过年了,我有某种原因,今年不能陪在父母身边了。父母牵挂,叫我不远千里回家拿年货。晚上父亲杀鸡杀鸭给我带走,...
    水杉的世界阅读 160评论 0赞 1
  • 第一万零一秒 床开始沉默 伸出来的玫瑰 也在昨天死了 昼夜忽然起伏 像是灾难的预兆 只有香烟还是安静的 从头开始烧...
    娃哈哈乌拉拉阅读 453评论 0赞 3

友情链接更多精彩内容