Oracle
SPLIT 함수
damian
2011. 12. 21. 11:45
CREATE OR REPLACE TYPE TB_SPLIT AS TABLE OF VARCHAR2(32767);
CREATE OR REPLACE FUNCTION UFN_SPLIT
(
P_LIST VARCHAR2,
P_DEL VARCHAR2
)
RETURN TB_SPLIT PIPELINED
IS
L_IDX PLS_INTEGER;
L_LIST VARCHAR2(32767) := P_LIST;
L_VALUE VARCHAR2(32767);
BEGIN
LOOP
L_IDX := INSTR(L_LIST,P_DEL);
IF L_IDX > 0 THEN
PIPE ROW(SUBSTR(L_LIST,1,L_IDX-1));
L_LIST := SUBSTR(L_LIST,L_IDX+LENGTH(P_DEL));
ELSE
PIPE ROW(L_LIST);
EXIT;
END IF;
END LOOP;
RETURN;
END UFN_SPLIT;
/
SELECT ROWNUM, COLUMN_VALUE FROM TABLE(UFN_SPLIT('9,8,1,2,3,4,5,6,7',','));