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 수행 결과