개발/오라클
오라클 문자열을 특정 delimiter로 split 하여 테이블처럼 반환
#무한동력
2020. 6. 17. 15:06
자바의 Split처럼 오라클에서도 문자열을 특정 delimiter로 데이터를 반환받을수있다 함수를 먼저 만들어놓고
CREATE OR REPLACE FUNCTION FN_SPLIT_TO_ROW
(
P_LIST VARCHAR2,
P_DEL VARCHAR2 := ','
)
RETURN TMP_SPLIT /* TYPE하나 만들어준다 */ 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
IF LENGTH(L_LIST) > 0 THEN
PIPE ROW(L_LIST);
END IF;
EXIT;
END IF;
END LOOP;
RETURN;
END FN_SPLIT_TO_ROW;
이런식으로 호출하면끝~
SELECT COLUMN_VALUE FROM TABLE(FN_SPLIT_TO_ROW('A,B,C',','));