웹개발/SQL
[SQL] 오라클 ROWNUM, BETWEEN AND, TO_CHAR, LAG, LEAD, OVER, NVL, MAX
YERl
2017. 12. 28. 22:56
오늘은 오라클 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, 1, 0) OVER(ORDER BY num DESC) prevNum, LEAD(num, 1, 0) 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이면 특정값으로 치환해야하는 경우에 사용합니다.