oracle⾃定义字符串分割为数组⽅法--定义数组类型
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(a.Count) := Trim(SubStr(psrc, j, i-j));
j := i+1;
END IF;
oracle 字符串转数组EXIT WHEN i=0;
END LOOP;
--把最后的字符放到数组中
IF j < Length(psrc) THEN
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',','));
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论