SQL 데이터 조회와 필터링 : BETWEEN 연산자
BETWEEN 연산자
이 학습은 패스트캠퍼스의 올인원 패키지 : 모두를 위한 SQL/DB 강의를 듣고 복습하는 내용입니다.
BETWEEN 연산자 문법
특정 집합에서 어떠한 컬럼의 값이 특정 범위안에 들어가는 집합을 출력하는 연산자이다.
● BETWEEN
>> COLUMN_NAME 컬럼의 값이 VALUE_A와 VALUE_B 사이에 있는 집합을 출력한다.
즉, COLUMN_NAME은 VALUE_A보다 크거나 같고 VALUE_B보다는 작거나 같다.
>> BETWEEN VALUE_A AND VALUE_B 는 COLUMN_NAME >= VALUE_A AND COLUMN_NAME <= VALUE_B 와 같은 결과
● NOT BETWEEN
>> COLUMN_NAME 컬럼의 값이 VALUE_A와 VALUE_B 사이에 있지 않은 집합을 출력한다.
즉, COLUMN_NAME은 VALUE_A보다 작거나(혹은) VALUE_B보다는 크다.
>> NOT BETWEEN VALUE_A AND VALUE_B 는 COLUMN_NAME < VALUE_A OR COLUMN_NAME > VALUE_B 와 같은 결과
BETWEEN 연산자 실습
● BETWEEN
- 쿼리문
SELECT
CUSTOMER_ID
, PAYMENT_ID
, AMOUNT
FROM
PAYMENT
WHERE AMOUNT BETWEEN 8 AND 9;
- 실행 결과
>> AMOUNT가 8부터 9사이인 집합을 출력
# 아래의 SQL과 같은 결과이다.
SELECT
CUSTOMER_ID
, PAYMENT_ID
, AMOUNT
FROM
PAYMENT
WHERE amount >= 8
AND amount <= 9
;
● NOT BETWEEN
- 쿼리문
SELECT
CUSTOMER_ID
, PAYMENT_ID
, AMOUNT
FROM
PAYMENT
WHERE AMOUNT NOT BETWEEN 8 AND 9;
- 실행결과
>> AMOUNT가 8부터 9사이가 아닌 집합을 출력한다.
# 아래의 SQL과 같은 결과
SELECT
CUSTOMER_ID
, PAYMENT_ID
, AMOUNT
FROM
PAYMENT
WHERE AMOUNT < 8 OR amount > 9;
● 형변환을 통해 일자 비교하기
- 쿼리문
SELECT
CUSTOMER_ID, PAYMENT_ID
, AMOUNT , PAYMENT_DATE
FROM PAYMENT
WHERE CAST(PAYMENT_DATE AS DATE) BETWEEN '2007-02-07' AND '2007-02-15';
- 실행 결과
>> PAYMENT_DATE는 원래 시:분:초까지 다 있는 데이터인데 그 데이터를 형변환해서 DATE인 2007-02-07 ~ 2007-02-15 데이터를 추출하였다.
## 아래처럼 TO_CHAR 를 통해 형변환을 할 수도 있다.
SELECT
CUSTOMER_ID, PAYMENT_ID
, AMOUNT , PAYMENT_DATE
FROM PAYMENT
WHERE TO_CHAR(PAYMENT_DATE, 'yyyy-mm-dd') BETWEEN '2007-02-07' AND '2007-02-15';
## 아래처럼 TO_CHAR를 통해 컬럼을 만드는 것도 가능
SELECT
CUSTOMER_ID, PAYMENT_ID
, AMOUNT , PAYMENT_DATE, to_char(PAYMENT_DATE, 'yyyy-mm-dd')
, CAST(PAYMENT_DATE AS DATE)
FROM PAYMENT
WHERE TO_CHAR(PAYMENT_DATE, 'yyyy-mm-dd') BETWEEN '2007-02-07' AND '2007-02-15';
## 다른 문법과 마찬가지로 BETWEEN을 이용하는 이유는 SQL은 복잡해질수록 가독성이 좋은 것을 선택해야 하는데 그것을 가능하게 해준다!