Oracle/SQL Question
[퀴즈] 구분자로 데이터 나누기
소마후니
2015. 9. 14. 18:50
문제> 아래와 같이 "|" 표시가 들어간 데이터가 있다.
이 데이터를 "|" 를 기준으로 행으로 데이터를 나타내고자 한다.
with tmp as (
select 'aa|bbb|cccc' str from dual
union all select 'dddd|eeeee|ff|ggg' from dual
)
select * from tmp;
결과는 아래와 같다.
아래와 같이 결과가 나오도록 해보자.
정답 트리플클릭 >
SELECT REGEXP_SUBSTR(str,'[^|]+',1,LEVEL) str
FROM (select rownum SEQ, str from tmp)
CONNECT BY CONNECT_BY_ROOT SEQ = SEQ
and LEVEL <= LENGTH(str) - LENGTH(REPLACE(str,'|')) + 1;