oracle 字符串分割成数组_oracle 自定义字符串分割为数组方法

http://dusiguxia.blog.163.com/blog/static/556293162011103293991/

--定义数组类型

CREATE OR REPLACE TYPE splittable AS TABLE OF varchar2(100) ;

/

CREATE OR REPLACE FUNCTION split_string

(src VARCHAR2, delimiter varchar2)

--返回为上述定义的数组类型

RETURN splittable IS

psrc VARCHAR2(500);

--定义一个数据变量

a splittable := splittable();

i NUMBER := 1;

j NUMBER := 1;

BEGIN

--去除头和尾的delimiter

psrc := RTrim(LTrim(src, delimiter), delimiter);

LOOP

--从左侧开始确定delimiter在psrc中从j处开始第1此出现的位置

i := InStr(psrc, delimiter, j);

IF i>0 THEN

--扩展表结构

a.extend;

a(a.Count) := Trim(SubStr(psrc, j, i-j));

j := i+1;

END IF;

EXIT WHEN i=0;

END LOOP;

--把最后的字符放到数组中

IF j < Length(psrc) THEN

a.extend;

a(a.Count) := Trim(SubStr(psrc, j, Length(psrc)+1-j));

END IF;

RETURN a;

END;

/

--测试

select * from table (SPLIT_STRING('1,2,3,4',','));

你可能感兴趣的:(oracle,字符串分割成数组)