[DB] Between ~ and 연산자, 숫자 잘라내기
Between - And 연산자
- 번호가 10보다 크거나 같고 35보다 작은 범위의 데이터 조회 -
AND
연산자 - 숫자나 날짜 범위인 경우
BETWEEN
연산자 사용 가능 ```sql – 번호가 10보다 크거나 같고 35보다 작거나 같은 범위의 데이터 조회. - AND 연산자 SELECT * FROM BOARD WHERE NO >= 10 AND NO <= 35 ORDER BY NO DESC;
– 숫자 범위인 경우 BETWEEN 연산자 사용 가능 SELECT * FROM BOARD WHERE NO BETWEEN 10 AND 35 ORDER BY NO DESC;
### 숫자 잘라내기 (TRUNC())
- `DATE` 형식을 날짜 비교할 경우 뒤에 시간을 지우고 비교를 하기 위해 숫자를 잘라낸다.
```sql
-- TRUNC() : 숫자인 경우 소수점 이하 잘라내기, 날짜형인 경우는 시간 정보 잘라내기
SELECT NO, TITLE, CONTENT, WRITER, TO_CHAR(WRITEDATE, 'YYYY-MM-DD') WRITEDATE, HIT
FROM BOARD
WHERE TRUNC(WRITEDATE) - '2024-04-26';
BETWEEN - AND 연산자로 페이지 처리 예시
--- 페이지 처리
-- 모든 데이터를 가져오자.
SELECT NO, TITLE, WRITER, WRITEDATE, HIT FROM BOARD
ORDER BY NO DESC;
-- 데이터가 많은 경우 사용자가 데이터를 보기가 불편하다. 그래서 페이지 처리를 한다.
-- 1. 페이지 : 10개의 데이터 - 전체 데이터 앞에 순서 번호를 붙혀서 1 ~ 10 가져오기
-- 1) 원본 데이터 가져오기
SELECT NO, TITLE, WRITER, WRITEDATE, HIT FROM BOARD
ORDER BY NO DESC;
-- 2) 순서 번호 붙히기 - ROWNUM 칼럼 앞에 추가 : 중간에 삭제되는 데이터의 빈 공간을 채우기 위해
SELECT ROWNUM RNUM, NO, TITLE, WRITER, WRITEDATE, HIT
FROM (
SELECT NO, TITLE, WRITER, WRITEDATE, HIT
FROM BOARD
ORDER BY NO DESC
)
-- 3) 페이지 정보에 맞는 데이터 가져오기
SELECT NO, TITLE, WRITER, WRITEDATE, HIT
FROM (
SELECT ROWNUM RNUM, NO, TITLE, WRITER, WRITEDATE, HIT
FROM (
SELECT NO, TITLE, WRITER, WRITEDATE, HIT
FROM BOARD
ORDER BY NO DESC
)
)
WHERE RNUM BETWEEN 1 AND 10;