Oracle转换字符串为数组
1. CREATE OR REPLACE TYPE mytable AS TABLE OF varchar2(500);
2. 方法:
CREATE OR REPLACE FUNCTION SEND_SPLIT (src VARCHAR2, delimiter varchar2)
RETURN mytable IS
psrc VARCHAR2(500);
a mytable := mytable();
i NUMBER := 1;
j NUMBER := 1;
BEGIN
psrc := RTrim(LTrim(src, delimiter), delimiter);
LOOP
i := InStr(psrc, delimiter, j);
--Dbms_Output.put_line(i);
IF i>0 THEN
a.extend;
a(a.Count) := Trim(SubStr(psrc, j, i-j));
j := i+1;
--Dbms_Output.put_line(a(a.Count-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;
3.测试:
SELECT * FROM users WHERE userid in (SELECT * FROM TABLE(CAST(SEND_SPLIT(UIDS, ',')AS mytable)))
posted on 2011-07-04 10:48 Scarface 阅读(12214) 评论(2) 编辑 收藏 举报