메뉴 건너뛰기

?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

1. 단일행을 다중 row로 분리

오라클에서 '1,2,3,4,5'라는 문자열을 레코드로 만들려면 어떻게해야 할까?

'1,2,3,4,5'

return
===========
1
2
3
4
5

즉, 결과가 위와같이 나오게 하려면?
connect by를 사용해서 만들수가 있다.

SELECT SUBSTR (str,
                INSTR (str, ',', 1, LEVEL) + 1,
                INSTR (str, ',', 1, LEVEL + 1) - INSTR (str, ',', 1, LEVEL) - 1
                ) sub
  FROM (SELECT ',' || '1,2,3,4,5' || ',' str FROM DUAL)
CONNECT BY LEVEL <= LENGTH (str) - LENGTH (REPLACE (str, ',')) - 1


위와 같이 connect by의 level을 사용해서 구현할 수 있다.
 

2. 다중 row 결과를 단일행으로 연결

이번엔 반대로 해보자.

1
2
3
4
5

return
===========
'1,2,3,4,5'

즉, 이렇게 나오게 하려면 다음과 같이 해보자.

SELECT SUBSTR (MAX (SYS_CONNECT_BY_PATH (str, ',')), 2) path# 
  FROM (
                SELECT str,
                            ROWNUM rnum
                   FROM (
                                SELECT 1 str FROM dual
                                UNION
                                SELECT 2 str FROM dual
                                UNION
                                SELECT 3 str FROM dual
                                UNION
                                SELECT 4 str FROM dual
                                UNION
                                SELECT 5 str FROM dual
                            )
           ) 
START WITH rnum = 1 
CONNECT BY PRIOR rnum = rnum - 1

테이블을 이용해서 같은 결과를 뽑아내려면 다음과 같이 해보자.

SELECT SUBSTR (MAX (SYS_CONNECT_BY_PATH (ename, ',')), 2) path# 
  FROM (
                SELECT ename, ROWNUM rnum 
                       FROM emp
           ) 
START WITH rnum = 1 
CONNECT BY PRIOR rnum = rnum - 1

List of Articles
번호 제목 날짜 조회 수
21 TOAD 에서 SQL Builder 을 사용하여 DML 문서 작성을 자동화 해본다 file 2016.08.30 7568
20 Toad 사용시 캐릭터 인코더 UTF-8 로 변경하기 file 2016.08.30 10169
19 Oracle 에서 NVL, NVL2 함수 사용하는 예제 2016.08.30 8396
18 rownum 으로 범위지정을 해주고 싶을 때 2016.08.30 8680
17 Oracle 시퀀스 생성, 추가, 삭제 file 2016.08.30 8221
16 TOAD 에서 Edit 를 통해 sql문을 작성할때 참고해야할 View file 2016.08.30 7522
15 UNION ALL 과 ORDER BY 섞어서 쓰기 2016.08.30 9968
14 오라클(Oracle) 대용량 데이터 토드(Toad)를 이용해서 넣기 file 2016.08.30 8099
13 간단한 쿼리로 일련번호 쉽게 넣기 - ROWNUM 사용 file 2016.08.29 9602
12 Oracle에서 ORA-28000: 계정이 잠금되었습니다. - 해결 방법 file 2016.08.29 7377
11 WHERE절에서 Null 값 비교하기 file 2016.08.29 9400
10 Oracle에서 Foreign Key가 걸려있는 컬럼값 업데이트(update) 하기 file 2016.08.29 9228
9 Oracle에서 사용자가 생성한 모든 Table, View를 삭제하는 쿼리 만들기 file 2016.08.29 7522
8 Oracle에서 세자리 콤마 찍기 file 2016.08.29 11799
7 Merge into를 이용해서 insert나 update를 자동으로 실행하자. 2016.08.29 7755
6 조건절에 WHERE 1=1, WHERE 1=0 사용하여 쿼리 간편하게 사용하기 file 2016.08.29 9690
5 Oracle에서 중복 조인을 피하기 위한 Update 방법 (MERGE 사용) 2016.08.29 8200
» 단일행을 다중 row로 분리, 다중 row 결과를 단일행으로 연결하는 방법 2016.08.29 9470
3 WITH문으로 쿼리를 임시테이블이나 View처럼 사용하자. 2016.08.29 8421
2 Oracle 저장 프로시저 샘플 2016.08.29 7285
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved