본문 바로가기
IT/기타

Oracle SQL 특정 문자 기준으로 문자열 분리하기(행으로 분리)

by twofootdog 2021. 5. 26.

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

댓글