본문 바로가기
Oracle

특정구분자로 구성된 문자열을 ROW로 변환하기(SPLIT) 2

by 캡틴노랑이 2016. 3. 3.
반응형

특정 문자로 구문된 문자열을 row으로 변환할 때 다음 코드를 사용 할 수 있다. 

Package로 만들어서 사용하면 다음과 같다.


사용 예

SELECT COLUMN_VALUE  FROM TABLE(COMNON_PKG.FN_RowByColumn(',' || RawData))



패키지로 만들 코드


 FUNCTION FN_RowByColumn(in_List IN VARCHAR2)
    RETURN Ty_VC2_Tab PIPELINED
  IS
    v_Result VARCHAR2(2000);
    v_First  NUMBER := 0;
    v_Second NUMBER := 0;

  BEGIN
    BEGIN
      IF SUBSTR(in_List, 1, 1) <> ','
      THEN
        v_Result := ',' || in_List;
      ELSE
        v_Result := in_List;
      END IF;

      LOOP
        v_First  := INSTR(in_List, ',', v_Second + 1, 1);
        v_Second := INSTR(in_List, ',', v_Second + 1, 2) - 1;

        IF v_Second > 0
        THEN
          PIPE ROW(SUBSTR(v_Result, v_First + 1, v_Second - v_First));
        ELSE
          PIPE ROW(SUBSTR(v_Result, v_First + 1));
        END IF;

        EXIT WHEN v_Second < 0;
      END LOOP

      RETURN;
    END;
  END FN_GETRowByColumn;
반응형

댓글