SQL 데이터 조회와 필터링 : BETWEEN 연산자


BETWEEN 연산자

이 학습은 패스트캠퍼스의 올인원 패키지 : 모두를 위한 SQL/DB 강의를 듣고 복습하는 내용입니다.

img

BETWEEN 연산자 문법

특정 집합에서 어떠한 컬럼의 값이 특정 범위안에 들어가는 집합을 출력하는 연산자이다.

● BETWEEN

img

>> COLUMN_NAME 컬럼의 값이 VALUE_A와 VALUE_B 사이에 있는 집합을 출력한다.

​ 즉, COLUMN_NAME은 VALUE_A보다 크거나 같고 VALUE_B보다는 작거나 같다.

>> BETWEEN VALUE_A AND VALUE_BCOLUMN_NAME >= VALUE_A AND COLUMN_NAME <= VALUE_B 와 같은 결과

● NOT BETWEEN

img

>> COLUMN_NAME 컬럼의 값이 VALUE_A와 VALUE_B 사이에 있지 않은 집합을 출력한다.

​ 즉, COLUMN_NAME은 VALUE_A보다 작거나(혹은) VALUE_B보다는 크다.

>> NOT BETWEEN VALUE_A AND VALUE_BCOLUMN_NAME < VALUE_A OR COLUMN_NAME > VALUE_B 와 같은 결과


BETWEEN 연산자 실습

● BETWEEN

- 쿼리문

 SELECT
        CUSTOMER_ID
      , PAYMENT_ID
      , AMOUNT
   FROM
        PAYMENT
  WHERE AMOUNT BETWEEN 8 AND 9;

- 실행 결과

img

>> 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;

- 실행결과

img

>> 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';

- 실행 결과

img

>> 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';

img

## 다른 문법과 마찬가지로 BETWEEN을 이용하는 이유는 SQL은 복잡해질수록 가독성이 좋은 것을 선택해야 하는데 그것을 가능하게 해준다!


© 2021. All rights reserved.

----------Powered by Hydejack----------

kyusang Hwang