將字符串利用分隔符轉成表格

  1. 在包頭裡定義TYPE SPLIT_TBL IS TABLE OF VARCHAR2(32767);
  2. 在包頭裡定義
  3. FUNCTION SPLIT(
  4.   VLIST         IN  VARCHAR2,
  5.   VDEL          IN  VARCHAR2:=','
  6. )RETURN SPLIT_TBL PIPELINED
  7. IS
  8. VIDX    PLS_INTEGER;
  9. VVLIST  VARCHAR2(32767):=VLIST;
  10. BEGIN
  11.   LOOP
  12.     VIDX := INSTR(VVLIST,VDEL);
  13.     IF VIDX > 0 THEN
  14.         PIPE ROW(SUBSTR(VVLIST,1,VIDX-1));
  15.         VVLIST:= SUBSTR(VVLIST,VIDX+LENGTH(VDEL));
  16.     ELSE
  17.         PIPE ROW(VVLIST);
  18.         EXIT;
  19.     END IF;
  20.   END LOOP;
  21.   RETURN;
  22. END SPLIT;
  23. 具體應用
  24. SELECT DECODE(POSITION,0,POST_STR,SUBSTR(POST_STR,1,POSITION-1)) AS POST_ID,
  25.        B.USER_ID, B.USER_NM  
  26.  FROM (SELECT COLUMN_VALUE AS POST_STR,INSTR(COLUMN_VALUE,',') AS POSITION,INSTR(COLUMN_VALUE,' ') AS POSITION2
  27.             FROM 
  28.            TABLE(PCK_ICS.SPLIT(SUBSTR('0001;0002;',0,LENGTH('0001;0002;')-1),';'))
  29.           ) A,TBL_USER B,TBL_POSITION C
  30.           WHERE DECODE(POSITION,0,POST_STR,SUBSTR(POST_STR,1,POSITION-1))=C.POST_ID
  31.            AND B.USER_ID=C.USER_ID
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值