咸咸海风

https://github.com/xianxianhaifeng

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::

函数如下:

 1 create or replace FUNCTION fn_rme_split(p_str       IN VARCHAR2,
 2                                         p_delimiter IN VARCHAR2)
 3   RETURN rme_split
 4   PIPELINED IS
 5   j    INT := 0;
 6   i    INT := 1;
 7   len  INT := 0;
 8   len1 INT := 0;
 9   str  VARCHAR2(4000);
10 BEGIN
11   len  := LENGTH(p_str);
12   len1 := LENGTH(p_delimiter);
13 
14   WHILE j < len LOOP
15     j := INSTR(p_str, p_delimiter, i);
16     IF j = 0 THEN
17       j   := len;
18       str := SUBSTR(p_str, i);
19       PIPE ROW(str);
20       IF i >= len THEN
21         EXIT;
22       END IF;
23     ELSE
24       str := SUBSTR(p_str, i, j - i);
25       i   := j + len1;
26       PIPE ROW(str);
27     END IF;
28   END LOOP;
29   RETURN;
30 END fn_rme_split;

 

测试如下:

1 select temp.ass_code
2 from (SELECT COLUMN_VALUE AS ass_code
3 FROM TABLE(rme_delete.fn_rme_split('a,b,c,d,e,f ',','))) temp;

执行结果如下:

posted on 2019-12-24 15:06  咸咸海风  阅读(2078)  评论(0编辑  收藏  举报