关闭

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

229人阅读 评论(0) 收藏 举报
分类:

一个字段的值 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;


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:242694次
    • 积分:2543
    • 等级:
    • 排名:第14932名
    • 原创:21篇
    • 转载:127篇
    • 译文:2篇
    • 评论:12条
    最新评论