自定义的split函数
CREATE OR REPLACE TYPE "SPLIT_TYPE" IS TABLE OF VARCHAR2 (4000)
CREATE OR REPLACE FUNCTION SPLIT (
P_STR IN VARCHAR2,
P_DELIMITER IN VARCHAR2 DEFAULT(',')
)
RETURN SPLIT_TYPE
IS
J INT := 0;
I INT := 1;
LEN INT := 0;
LEN1 INT := 0;
STR VARCHAR2 (4000);
MY_SPLIT SPLIT_TYPE := SPLIT_TYPE ();
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);
MY_SPLIT.EXTEND;
MY_SPLIT (MY_SPLIT.COUNT) := STR;
IF I >= LEN
THEN
EXIT;
END IF;
ELSE
STR := SUBSTR (P_STR, I, J - I);
I := J + LEN1;
MY_SPLIT.EXTEND;
MY_SPLIT (MY_SPLIT.COUNT) := STR;
END IF;
END LOOP;
RETURN MY_SPLIT;
END SPLIT;
使用split 函数
SELECT SPLIT('name,age,class') FROM DUAL

SELECT * FROM TABLE(SPLIT('name,age,class'))
