오늘은 오라클 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이면 특정값으로 치환해야하는 경우에 사용합니다.
'웹개발 > SQL' 카테고리의 다른 글
[Oracle] ORA-29275: 부분 다중 바이트 문자 (0) | 2018.05.08 |
---|---|
pl sql developer beautifier (0) | 2018.04.10 |
[iBatis] executeQueryForObject returned too many results - 에러 (0) | 2018.03.25 |
[iBatis] iBatis - iterate 태그로 동적 Query (0) | 2018.03.18 |
oracle에서 2개의 특정기간 사이의 데이터만 가져오고 싶을 때 (1) | 2018.01.03 |