oracle split 函数 返回数组
最近在 oracle 中用到拆分字符串返回数组,一直头痛,因为在 oracle 中没有类似 java 中有 split 函数 ,所
以要自己写。好不容搜到一个。那网上是到处都是这个代码。怎么找都是这个方法,我就用了。这个方法
如下: (方法一)用到后面出现 了 bug 。哎弄了一下午就给别人测试了一下 bug。(方法一)根本就行
不通。于是我就自己改写了。(方法二)大家如有需要的请参考方法二:
如果用方法一来分隔字符串。
如果 我需要分隔的字符串为”a,b,c,d”
分隔符为","分隔后的数组,就没有问题。
比如 我需要分隔的字符串为”a,b,c,d/e,f,g,h/i,j,k,l”
分隔符为"/" ,分割后的数组,只有两组,最后一组消失了!这时用到第一种方法就不行。
方法一(相信大家在网上已经搜到不少了,也看到不少了。)
(方法一)
CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000);
CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2)
RETURN ty_str_split
IS
j INT := 0;
i INT := 1;
len INT := 0;
len1 INT := 0;
str VARCHAR2 (4000);
str_split ty_str_split := ty_str_split ();
BEGIN
len := LENGTH (p_str);
len1 := LENGTH (p_delimiter);
WHILE j < len
LOOP
j := INSTR (p_str, p_delimiter, i);
IF j = 0
THEN
j := len;
str := SUBSTR (p_str, i);
str_split.EXTEND;
str_split (str_split.COUNT) := str;
评论0
最新资源