自定义函数-文本拆分多行

一个字段的值 1,2,3,4。。。 要输出一列

因为不知道多少个,所以 substr instr 用起来比较麻烦

自己写一个函数 类似于split

CREATE OR REPLACE 

FUNCTION FSS_SPLIT
(
   P_LIST NVARCHAR2,
   P_SEP NVARCHAR2 := ','
)  RETURN TYPE_SPLIT PIPELINED
IS
   L_IDX  PLS_INTEGER;
   V_LIST  NVARCHAR2(32767) := P_LIST;
BEGIN
   LOOP
      L_IDX := INSTR(V_LIST,P_SEP);
      IF L_IDX > 0 THEN
          IF SUBSTR(V_LIST,1,L_IDX-1) IS NOT NULL THEN
              PIPE ROW(SUBSTR(V_LIST,1,L_IDX-1));
          END IF;
          V_LIST := SUBSTR(V_LIST,L_IDX+LENGTH(P_SEP));
      ELSE
          IF V_LIST IS NOT NULL THEN
              PIPE ROW(V_LIST);
          END IF;
          EXIT;
      END IF;
   END LOOP;
   RETURN;

END;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值