[ NOT ] BETWEEN
[ NOT ] BETWEEN (범위 사이 판별)
입력 표현식(숫자 또는 문자열)이 지정한 하한과 상한 범위 안에 있으면 TRUE를 반환해요.
본문
구문
<expr> [ NOT ] BETWEEN <lower_bound> AND <upper_bound>
인자
expr
입력 표현식이에요.
lower_bound
하한 경계예요.
upper_bound
상한 경계예요.
반환 값
이 함수는 BOOLEAN 타입 값을 반환해요.
사용 참고 사항
expr BETWEEN lower_bound AND upper_bound은expr >= lower_bound AND expr <= upper_bound와 동일해요.- 인자 값들의 데이터 타입은 같거나 호환되어야 해요. 함수가 값을 다른 데이터 타입으로 암시적으로 캐스팅하면 예상치 못한 결과가 나올 수 있어요.
예를 들어
expr이 TIMESTAMP 값이고lower_bound와upper_bound값이 DATE 값이면, DATE 값은 TIMESTAMP 값으로 암시적으로 캐스팅되고 시간은 00:00:00으로 설정돼요. 다음 WHERE 절에서timestamp_column이 테이블의 TIMESTAMP 타입 컬럼이라고 가정해요:
WHERE timestamp_column BETWEEN '2025-04-30' AND '2025-04-31'
DATE 값이 암시적으로 캐스팅되면 WHERE 절은 다음과 같이 해석돼요:
WHERE timestamp_column BETWEEN '2025-04-30 00:00:00' AND '2025-04-31 00:00:00'
이 WHERE 절에서 함수는 2025-04-31의 사실상 모든 timestamp_column 값에 대해 FALSE를 반환하는데, 이는 의도하지 않은 것일 수 있어요. 이 특정 문제를 피하려면 함수를 호출할 때 upper_bound에 다음 날을 지정할 수 있어요:
WHERE timestamp_column BETWEEN '2025-04-30' AND '2025-05-01'
데이터 정렬(collation) 상세
A BETWEEN X AND Y 표현식은 A >= X AND A <= Y와 동일해요. X와 Y를 비교하는 데 사용되는 데이터 정렬은 서로 독립적이며 동일할 필요는 없지만, 둘 다 A의 데이터 정렬과 호환되어야 해요.
예시
다음은 숫자와 문자열 값에서 BETWEEN을 사용하는 몇 가지 간단한 예시예요:
SELECT 'true' WHERE 1 BETWEEN 0 AND 10;
+--------+
| 'TRUE' |
|--------|
| true |
+--------+
SELECT 'true' WHERE 1.35 BETWEEN 1 AND 2;
+--------+
| 'TRUE' |
|--------|
| true |
+--------+
SELECT 'true' WHERE 'the' BETWEEN 'that' AND 'then';
+--------+
| 'TRUE' |
|--------|
| true |
+--------+
다음 예시는 BETWEEN과 함께 COLLATE를 사용해요:
SELECT 'm' BETWEEN COLLATE('A', 'lower') AND COLLATE('Z', 'lower');
+-------------------------------------------------------------+
| 'M' BETWEEN COLLATE('A', 'LOWER') AND COLLATE('Z', 'LOWER') |
|-------------------------------------------------------------|
| True |
+-------------------------------------------------------------+
SELECT COLLATE('m', 'upper') BETWEEN 'A' AND 'Z';
+-------------------------------------------+
| COLLATE('M', 'UPPER') BETWEEN 'A' AND 'Z' |
|-------------------------------------------|
| True |
+-------------------------------------------+