카테고리 없음

오라클 문자열(콤마)을 행으로 분리하는 쿼리 SQL ORACLE

백프로♬ 2017. 11. 8. 17:02

간혹 업무를 처리하다보면 콤마(,)나 슬래시(/) 등으로 구분된 문자열을 행으로 분리해야하는 경우가 있습니다.

오라클 10g에서는 관련 함수(Regexp_Substr)를 제공하고 있지만 9i이하에서는 쿼리를 작성하여 처리해야 합니다.


문자열에  'A, B, C, D' 가 들어있는 경우,


오라클 9i에서 문자열 분리하는 방법


SELECT     SUBSTR (COL,
                   INSTR (COL, ',', 1, LEVEL) + 1,
                   INSTR (COL, ',', 1, LEVEL + 1) - INSTR (COL, ',', 1, LEVEL)
                   - 1) AS COL
FROM (SELECT ',' || 'A,B,C,D' || ',' AS COL
              FROM DUAL)
CONNECT BY LEVEL <= LENGTH (COL) - LENGTH (REPLACE (COL, ',')) - 1

;


오라클 10g에서 문자열 분리하는 방법


Select Regexp_Substr('A,B,C,D','[^,]+', 1, Level) COL From Dual
Connect By Regexp_Substr('A,B,C,D', '[^,]+', 1, Level) Is Not Null

;



결과값


COL

------

  A

  B

  C