오늘은 오라클 ROWNUM, BETWEEN AND, TO_CHAR, LAG OVER, LEAD OVER, NVL, MAX 쿼리에 대해서 알아보겠습니다.


1
2
3
4
5
6
7
8
    SELECT *
    FROM (SELECT result1.*,ROWNUM rnum 
          FROM (SELECT num,writer,title,content,regdate
                FROM board_guest
                ORDER BY num DESC
                ) result1
         )
    WHERE rnum BETWEEN #{startRowNum} AND #{endRowNum}
cs


ROWNUM  : 보통 오라클에서 페이징을 하거나 top n 을 뽑을때 사용합니다.

 

BETWEEN  : 범위를 지정하여 조건을 걸 때 사용합니다.



1
2
3
4
5
6
7
8
9
        SELECT result1.*
        FROM 
            (SELECT num,writer,title,content,
            TO_CHAR(regdate, 'YYYY.MM.DD AM HH:MI') regdate,
            LAG(num, 10) OVER(ORDER BY num DESC) prevNum,
            LEAD(num, 10) OVER(ORDER BY num DESC) nextNum
            FROM board_guest
            ORDER BY num DESC) result1
        WHERE num=#{num}
cs


TO_CHAR(숫자 혹은 날자, format)  : 숫자나 날짜를 문자로 변환해 주는 함수입니다.


LAG : 이전(위) Row 값을 가져올때 사용합니다.


LEAD : 이후(아래) Row 값을 가져올때 사용합니다.


OVER : ORDER BY, GROUP BY 서브쿼리를 개선하기 위해 나온 함수라고 할 수 있습니다.

   참고 : http://blog.naver.com/whitefre/140148769754



1
2
        SELECT NVL(MAX(ROWNUM), 0)
        FROM board_guest
cs


MAX : 최고값에 해당하는 값을 가져올때 사용합니다.


NVL : 테이블에 not null 처리가 안되어 있는 컬럼에 대해서 자주 사용합니다.

어떤 컬럼이 Null이면 특정값으로 치환해야하는 경우에 사용합니다.

+ Recent posts