문자열을 구분자(콤마)로 잘라 행으로 변환... 0 2 1,126

by 스파르타 [SQL Query] [2017.02.20 19:28:51]


WITH TMP

AS

( SELECT 'A,B,C,D' CD FROM DUAL UNION ALL

SELECT 'E,F,G' CD FROM DUAL UNION ALL

SELECT '1,2,3,4,5,6' CD FROM DUAL UNION ALL

SELECT 'T1,T2' CD FROM DUAL UNION ALL

SELECT 'S1,S2,S3' CD FROM DUAL

)

질문드립니다. 로우 하나일때는 열에 콤마를 구분으로 잘라서 행으로 만드는게 가능한데.. 여러행의 문자열을 콤마로 잘라서

뿌려주는게 좀 잘안되네요... 응용이 어렵네요 이것저것 찾아보고 해봐도 도통...ㅠㅠ

아시는분 도움주시면 감사하겠습니다.

CD의 문자열은 콤마로 구분되며 N개일수있습니다. 20개 이하. 

10g 구요

 

원하는결과는 아래처럼 행으로 만들고 싶습니다.

=====================================

A

B

C

D

E

F

G

1

2

3

4

5

6

.

.

생략

 

 

by jkson [2017.02.20 21:06:01]
with tmp
as
(
select 'a,b,c,d' cd from dual union all
select 'e,f,g' cd from dual union all
select '1,2,3,4,5,6' cd from dual union all
select 't1,t2' cd from dual union all
select 's1,s2,s3' cd from dual
)
select regexp_substr(cd,'[^,]+',1,lv) cd from tmp a
,(select level lv from dual connect by level <= 20)
where length(cd) - length(replace(cd,',','')) + 1 >= lv
order by cd

 


by 스파르타 [2017.02.21 09:02:13]

jkson 님 도움 감사드립니다.

잘활용할게요^^ 감기조심하세요!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입