比方说你从数据库中查出来的数据是一个字符串,是有,隔开的多个字符串,这方法是极好的。首先定义一个分割函数,具体如下L
CREATE OR REPLACE FUNCTION f_strsplit (STRING VARCHAR2, substring VARCHAR2)
RETURN varchar2varray
IS
len INTEGER := LENGTH (substring);
lastpos INTEGER := 1 - len;
pos INTEGER;
num INTEGER;
i INTEGER := 1;
ret varchar2varray := varchar2varray (NULL);
v_str VARCHAR2 (100);
/**自定义split函数,将指*/
BEGIN
LOOP
pos := INSTR (STRING, substring, lastpos + len);
IF pos > 0
THEN --found
num := pos - (lastpos + len);
ELSE --not found
num := LENGTH (STRING) + 1 - (lastpos + len);
END IF;
IF i > ret.LAST
THEN
ret.EXTEND;
END IF;
v_str := SUBSTR (STRING, lastpos + len, num);
--DBMS_OUTPUT.put_line (v_str);
ret(i) := v_str;
EXIT WHEN pos = 0;
lastpos := pos;
i := i + 1;
END LOOP;
RETURN ret;
END;
下面是他的使用L
使用:
先建立一个数组类型:CREATE OR REPLACE TYPE Varchar2Varray IS VARRAY(100) of VARCHAR2(50)
SELECT * FROM TABLE (CAST (f_strsplit ("取出那个字段的值",',') AS varchar2varray ) )
ok 问题解决,如有需要还会再补充的。