MySQL에서 특정 값이 두 값 사이의 범위에 포함되어 있는지 확인하려면 BETWEEN 연산자를 사용하면 됩니다. BETWEEN은 시작값과 끝값을 경계로 하여, 해당 값이 그 구간 안에 속하는지 간단하게 판별할 수 있도록 도와주는 아주 유용한 연산자입니다.
1. 예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다. 이 테이블은 범위의 시작값(Start)과 끝값(End)을 저장하는 두 개의 컬럼을 가집니다.
mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Start int,
-> End int
-> );
Query OK, 0 rows affected (0.91 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용하여 몇 개의 레코드를 추가합니다. 각 레코드는 서로 다른 숫자 범위를 나타냅니다.
mysql> insert into DemoTable(Start,End) values(100,200);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(Start,End) values(400,500);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(Start,End) values(210,350);
Query OK, 1 row affected (0.11 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+----+-------+------+
| Id | Start | End |
+----+-------+------+
| 1 | 100 | 200 |
| 2 | 400 | 500 |
| 3 | 210 | 350 |
+----+-------+------+
3 rows in set (0.00 sec)
4. BETWEEN 연산자로 범위 내 값 찾기
이제 핵심 부분입니다. 값 432가 어떤 범위(Start ~ End)에 속하는지 찾는 쿼리는 다음과 같습니다.
mysql> select *from DemoTable WHERE 432 BETWEEN Start AND End;
실행 결과는 다음과 같습니다.
+----+-------+------+
| Id | Start | End |
+----+-------+------+
| 2 | 400 | 500 |
+----+-------+------+
1 row in set (0.04 sec)
결과 분석
출력 결과를 보면 Id가 2인 레코드만 반환되었습니다. 이 레코드의 범위는 400부터 500까지이며, 조회한 값 432가 이 구간에 포함되기 때문입니다. 반면 100~200, 210~350 범위에는 432가 속하지 않으므로 해당 레코드들은 결과에서 제외됩니다.
정리
BETWEEN 연산자는 WHERE 값 BETWEEN 시작값 AND 끝값 형태로 사용하며, 양쪽 경계값(시작값과 끝값)을 모두 포함한다는 점을 기억해야 합니다. 이처럼 BETWEEN을 활용하면 복잡한 조건문 없이도 특정 값이 범위에 속하는지 손쉽게 확인할 수 있습니다.