본문 바로가기
개발/오라클

오라클 문자열을 특정 delimiter로 split 하여 테이블처럼 반환

by #무한동력 2020. 6. 17.

자바의 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',','));

 

댓글