[오라클] 게시판 리스트 페이징 (로우넘)

    SELECT BBS_SEQ, 
           USER_ID,
           USER_NAME, 
           USER_EMAIL,
           BBS_PWD,
           BBS_TITLE,
           BBS_CONTENT,
           BBS_READ_CNT, 
           REG_DATE
      FROM (SELECT ROWNUM AS RNUM,
                          BBS_SEQ, 
                           USER_ID,
                           USER_NAME, 
                           USER_EMAIL,
                           BBS_PWD,
                           BBS_TITLE,
                           BBS_CONTENT,
                           BBS_READ_CNT, 
                           REG_DATE
            FROM (SELECT BBS_SEQ, 
                           USER_ID,
                           USER_NAME, 
                           USER_EMAIL,
                           BBS_PWD,
                           BBS_TITLE,
                           BBS_CONTENT,
                           BBS_READ_CNT, 
                           REG_DATE
                      FROM (SELECT A.BBS_SEQ, 
                                   A.USER_ID,
                                   NVL(B.USER_NAME,'') USER_NAME,
                                   NVL(B.USER_EMAIL,'') USER_EMAIL,
                                   NVL(A.BBS_PWD,'') BBS_PWD,
                                   NVL(A.BBS_TITLE,'') BBS_TITLE,
                                   NVL(A.BBS_CONTENT,'') BBS_CONTENT,
                                   NVL(A.BBS_READ_CNT, 0) BBS_READ_CNT,
                                   NVL(TO_CHAR(A.REG_DATE, 'YYYY.MM.DD HH24:MI:SS'), '') REG_DATE
                              FROM TBL_BOARD A, TBL_USER B
                             WHERE A.USER_ID = B.USER_ID
                             ORDER BY A.BBS_SEQ DESC) ))
    WHERE RNUM >=1
      AND RNUM <=5;

    여기서 검색 조건을 추가하면 다음과 같다. 

     

    (CLOB 타입의 문자열을 검색할 때 사용하는 함수)

    : DBMS_LOB.INSTR(A.BBS_CONTENT, '게시') > 0

    위치를 반환하기 때문에 0보다 크면 검색 조건에 맞는 게시글이 있는 것으로 간주할 수 있다. 

    SELECT BBS_SEQ, 
           USER_ID,
           USER_NAME, 
           USER_EMAIL,
           BBS_PWD,
           BBS_TITLE,
           BBS_CONTENT,
           BBS_READ_CNT, 
           REG_DATE
      FROM (SELECT ROWNUM AS RNUM,
                          BBS_SEQ, 
                           USER_ID,
                           USER_NAME, 
                           USER_EMAIL,
                           BBS_PWD,
                           BBS_TITLE,
                           BBS_CONTENT,
                           BBS_READ_CNT, 
                           REG_DATE
            FROM (SELECT BBS_SEQ, 
                           USER_ID,
                           USER_NAME, 
                           USER_EMAIL,
                           BBS_PWD,
                           BBS_TITLE,
                           BBS_CONTENT,
                           BBS_READ_CNT, 
                           REG_DATE
                      FROM (SELECT A.BBS_SEQ, 
                                   A.USER_ID,
                                   NVL(B.USER_NAME,'') USER_NAME,
                                   NVL(B.USER_EMAIL,'') USER_EMAIL,
                                   NVL(A.BBS_PWD,'') BBS_PWD,
                                   NVL(A.BBS_TITLE,'') BBS_TITLE,
                                   NVL(A.BBS_CONTENT,'') BBS_CONTENT,
                                   NVL(A.BBS_READ_CNT, 0) BBS_READ_CNT,
                                   NVL(TO_CHAR(A.REG_DATE, 'YYYY.MM.DD HH24:MI:SS'), '') REG_DATE
                              FROM TBL_BOARD A, TBL_USER B
                             WHERE A.USER_ID = B.USER_ID
                               AND B.USER_NAME LIKE '%김%'
                               AND A.BBS_TITLE LIKE '%게시%'
                               AND DBMS_LOB.INSTR(A.BBS_CONTENT, '게시') > 0
                             ORDER BY A.BBS_SEQ DESC) ))
    WHERE RNUM >=1
      AND RNUM <=5;

     

     

    연습문제 : 화면과 같이 결과를 출력하며, 작성자 이름에 '..'을 포함하는 조건으로 데이터 조회. 페이징 처리를 하며, 1부터 5페이지만 조회. (최신순 조회)

    단, 리스트 페이지는 내용이 필요없으므로 조회 항목에서 제하며

     

    B.BBS_SEQ, U.USER_ID, U.USER_NAME, U.USER_EMAIL, B.BBS_PWD,
            B.BBS_TITLE, B.BBS_CONTENT, B.BBS_READ_CNT, B.REG_DATE 

    댓글