IT/기타
Oracle SQL 특정 문자 기준으로 문자열 분리하기(행으로 분리)
twofootdog
2021. 5. 26. 19:44
Oracle SQL을 작성하다 보면 특정 문자를 기준으로 문자열을 행(row)으로 분리해야 하는 경우가 종종 있다.
만약 테이블 컬럼의 데이터가 "10|20|30|40|50|" 인 경우, 문자 "|"를 기준으로 10~50으로 데이터를 분리(5개의 row) 하려면 아래와 같이 SQL을 작성하면 된다(아래 SQL에서는 테이블이 WITH절, 컬럼은 STR이고, 분리된 ROW 명이 CODE 다 )
문자열
SQL
WITH TMP AS (SELECT '10|20|30|40|50|' AS STR FROM DUAL)
SELECT
REGEXP_SUBSTR(TMP.STR, '[^|]+', 1, LEVEL) CODE
FROM
DUAL, TMP
CONNECT BY REGEXP_SUBSTR(TMP.STR, '[^|]+', 1, LEVEL) IS NOT NULL;
SQL 수행 결과