이전 시간에 CONNECT BY PRIOR 에 대해서 공부를 했는데 내친 김에 이어서 CONNECT BY LEVEL 에 대해서도 공부를 해보자.
CONNECT BY LEVEL 은 결론부터 말하자면 FOR 문을 사용한 것처럼 결과 값을 보여주는 게 가능하다.
이것도 무슨 말인가 하면 설명하면 힘드니 곧바로 쿼리를 돌려서 알아보자.
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 10 ; ------------------------------------- 1 2 3 4 5 6 7 8 9 10
위의 예제를 보면 알 수 있듯이 CONNECT BY LEVEL <= :변수 로 지정한 만큼 ROW 를 반환해준다.
당연한 이야기지만 CONNECT BY LEVEL < 10 이었다면 9개의 ROW 만 표시가 되었을 것이다.
응용 가능한 예제를 몇 가지 예로 들고 끝내자.
-- 증가하는 날짜값 SELECT TO_CHAR(TO_DATE('20180401','YYYYMMDD')+LEVEL-1,'YYYYMMDD') DAY FROM DUAL CONNECT BY LEVEL <= 10 ; ----------------------------------------------------------------------------- 20180401 20180402 20180403 20180404 20180405 20180406 20180407 20180408 20180409 20180410 -- 이번달 1일부터 말일까지 구하기 SELECT TO_CHAR(SYSDATE, 'YYYYMM') || LPAD(LEVEL, 2, '0') AS TDAY FROM DUAL CONNECT BY LEVEL <= ((TO_CHAR(LAST_DAY(SYSDATE), 'YYYYMMDD') - (TO_CHAR(SYSDATE, 'YYYYMM')||'01'))) + 1 ; ----------------------------------------------------------------------------- 20180401 20180402 20180403 20180404 20180405 20180406 20180407 20180408 20180409 20180410 20180411 20180412 20180413 20180414 20180415 20180416 20180417 20180418 20180419 20180420 20180421 20180422 20180423 20180424 20180425 20180426 20180427 20180428 20180429 20180430
'개발 > 오라클' 카테고리의 다른 글
오라클 - 펑션(FUNCTION) 생성 복습! (0) | 2018.04.29 |
---|---|
오라클 - 계층형 쿼리 START WITH... CONNECT BY PRIOR (0) | 2018.04.14 |
오라클 - 문자열을 자릿수만큼 채워주는 LPAD(), RPAD() 함수 (0) | 2018.04.14 |
오라클 - 정규표현식 함수 REGEXP_REPLACE() (0) | 2018.04.01 |
댓글