SELECT 'DATA="ABC" DATA="DEF" DATA="GHI"' AS DATA FROM DUAL;
데이터에 DATA에 해당하는부분은 가변길이입니다.
--결과
[DATA]
====
'ABC'
'DEF'
'GHI'
by 비니
[2014.09.15 14:00:46]
질문의 의도가 무엇인지 ??
SELECT 'DATA="ABC" DATA="DEF" DATA="GHI"' AS DATA FROM DUAL; 이 쿼리로 나오게 되는 값이
DATA="ABC" DATA="DEF" DATA="GHI" 입니다.
뭐 실제 데이터가 저렇게 들어가있다 .. 는 말씀이고 .
원하는 데이터는 저 위에 데이터를
아래처럼 나오게 해달라고 하시는 건가요?
[DATA] ==== 'ABC' 'DEF' 'GHI'
by 비니
[2014.09.15 14:02:01]
원본 데이터의 포멧이랑
쿼리로 원하는 결과값을 예로 들어주셔야 정확한 답변이 달릴것 같습니다만.
by 이티
[2014.09.15 14:11:54]
비니님 첫 댓글에 대한 해석이 맞구요.
핵심을 말씀드리자면 필드와 행이 하나뿐인 SQL 을 세로SQL로 가변적으로 풀 수 있냐는 질문입니다.
단, 과정속에서 DATA에 들어가 있는 문자열값을 가변길이인것을 고려해서
해당 카운트만큼의 로우가 생성되며 각각의 다른 데이터를 출력 할 수 있는가에 대한 질문이기도 합니다.
by DarkBee
[2014.09.15 14:27:16]
WITH t AS
(
SELECT 'DATA="ABC" DATA="DEF" DATA="GHI"' AS data FROM DUAL
)
SELECT REGEXP_SUBSTR ( data, '[^"]+', 1, LEVEL * 2 ) data
FROM t
CONNECT BY LEVEL <= ( SELECT REGEXP_COUNT ( data, 'DATA=' ) FROM t )
by 이티
[2014.09.15 14:40:16]
와우 답변 감사합니다!
제가 원하는 답변입니다!
제가 사용은 10g를 사용하므로 REGEXP_COUNT 를 못써서 10g 용으로 조금 변환하여 해결 하였습니다.
소중한 답변 잘 응용하도록 하겠습니다. 감사합니다. (__) 꾸벅
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.