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$','$') );

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值