메뉴 건너뛰기

?

단축키

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
번호 제목 날짜 조회 수
61 쿼리 파싱 시간 측정 - query parsing time 2016.12.08 7708
60 Oracle Batch Processing 2016.12.08 6832
59 rownum 사용 - 최근글 몇개만 가져오기 2016.12.08 9991
58 오라클 25가지 SQL 작성법 2016.12.08 7715
57 CLOB TEXT 데이타를 저장하고, 조회하는 예제 2016.12.08 13093
56 오라클에서 레코드 값이 없을때 2016.12.08 13475
55 oracle 에서 Index를 이용해서 즉 힌트와 rownum을 이용하여 게시판 작성하기 2016.12.08 7029
54 데이터의 암호화 및 복호화 file 2016.12.08 13253
53 ORA-39142 덤프 버전이 틀려서 넣지 못할 때 2016.12.08 8984
52 Oracle SQL Developer 도구 활용하기 - Part1 file 2016.12.08 11748
51 Oracle SQL Developer 도구 활용하기 - Part2 file 2016.12.08 11319
50 sqlplus에서 Ampersand나 특수 문자를 갖는 데이타를 insert하는 방법 sqlplus 데이터 insert 입력값 요구 2016.12.08 8920
49 Oracle DBMS_CRYPTO 사용하기 - 암복호화 하기 file 2016.12.08 11650
48 CentOS 6.5 에 Oracle Database 11g Release 2 설치하기 file 2016.12.08 12418
47 오라클 테이블 생성 스크립트 DDL 추출 - 깔끔하게 Table 전부 추출(Export)하기 file 2016.12.08 12557
46 오라클11g DB 생성 file 2016.12.08 9730
45 오라클 DB 생성 후 설정 Listener.ora & Tnsnames.ora (윈도우) file 2016.12.08 23315
44 IMP-00010: 엑스포트 파일이 유효하지 않고, 헤더가 검증에 실패했습니다 file 2016.12.08 8819
43 ORA-01652 128(으)로 테이블 공간 ***에서 임시 세그먼트를 확장할 수 없습니다. file 2016.12.08 9261
42 오라클 계정 lock 해제 2016.12.08 8447
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved