PostgreSQL BETWEEN 运算符的用法与实例
本文介绍了在 PostgreSQL 中如何在使用 BETWEEN
运算符检查一个值是否位于一个区间之内。
假如,在一个应用系统中,您需要判断根据用户的年收入为用户划定等级。比如,要检查用户的年收入是否位于 40100 元和 120400 元之间,您可以使用以下语句:
annual_income >= 40100 AND annual_income <= 120400
这种情况下,您可以使用 BETWEEN
运算符改写上面的语句,如下:
annual_income BETWEEN 40100 AND 120400
PostgreSQL BETWEEN
运算符用于检查一个值是否位于一个值区间之内。
PostgreSQL BETWEEN 语法
要检查一个值是否位于一个值区间之内,请按照以下语法使用 BETWEEN
运算符:
expr BETWEEN low_value AND high_value;
这里:
expr
是一个表达式或者列名。low_value
是值区间的开始,high_value
是值区间的结束。- 如果
expr
的值大于或等于low_value
值并且小于或等于high_value
值,BETWEEN
运算符返回真,否则返回假。
BETWEEN
运算符相当于以下使用了 大于等于 (>=
) 和 小于等于 (<=
) 运算符的语句:
expr >= low_value AND expr <= high_value
通常情况下,您在 WHERE
子句中使用 BETWEEN
运算符, 如下所示:
SELECT * FROM table_name
WHERE expr >= low_value AND expr <= high_value
当然,出了 INSERT
语句外, WHERE
子句同样可以用于 UPDATE
或者 DELETE
语句。
您可以使用结合 NOT
运算符和 BETWEEN
运算符以检查一个值是否不在一个指定的值区间之内:
expr NOT BETWEEN low_value AND high_value;
这相当于以下使用了 大于 (>
) 和 小于 (<
) 运算符的语句:
expr < low_value OR expr > high_value
PostgreSQL BETWEEN 运算符实例
我们将使用 Sakila 示例数据库 中的表进行演示,请您先在 PostgreSQL 中安装 Sakila 示例数据库。
要从 film
表中检索影片时长在在 95 到 98 分钟之间的影片,请使用以下语句:
SELECT
title, length
FROM
film
WHERE
length BETWEEN 95 AND 98;
title | length
---------------------+--------
BOUND CHEAPER | 98
CLUELESS BUCKET | 95
DRUMS DYNAMITE | 96
EARLY HOME | 96
EARRING INSTINCT | 98
EXPENDABLE STALLION | 97
FEUD FROGMEN | 98
HORN WORKING | 95
INVASION CYCLONE | 97
LOST BIRD | 98
LUCKY FLYING | 97
MADRE GABLES | 98
PREJUDICE OLEANDER | 98
REAR TRADING | 97
SENSIBILITY REAR | 98
WISDOM WORKER | 98
要从 film
表中检索租金在 3 到 5 美元之间的影片的数量,请使用以下语句:
SELECT
count(*)
FROM
film
WHERE
rental_rate BETWEEN 3 AND 5;
count
-------
336
要从 film
表中检索租金不在 3 到 5 美元之间的影片的数量,请使用以下语句:
SELECT
count(*)
FROM
film
WHERE
rental_rate NOT BETWEEN 3 AND 5;
count
-------
664
要从 payment
表中检索金额在 5 到 5.98 之间的付款,请使用以下语句:
SELECT
customer_id,
amount,
payment_date
FROM
payment
WHERE
amount BETWEEN 5 AND 5.98;
customer_id | amount | payment_date
-------------+--------+---------------------
42 | 5.98 | 2006-02-14 15:16:03
208 | 5.98 | 2006-02-14 15:16:03
216 | 5.98 | 2006-02-14 15:16:03
284 | 5.98 | 2006-02-14 15:16:03
516 | 5.98 | 2006-02-14 15:16:03
560 | 5.98 | 2006-02-14 15:16:03
576 | 5.98 | 2006-02-14 15:16:03
要从 payment
表中检索付款日期介于在 2005-05-24
到 2005-05-25
之间的付款,请使用以下语句:
SELECT
customer_id,
amount,
payment_date
FROM
payment
WHERE
payment_date BETWEEN '2005-05-24' AND '2005-05-25';
customer_id | amount | payment_date
-------------+--------+---------------------
130 | 2.99 | 2005-05-24 22:53:30
222 | 6.99 | 2005-05-24 23:05:21
239 | 4.99 | 2005-05-24 23:31:46
269 | 1.99 | 2005-05-24 23:11:53
333 | 4.99 | 2005-05-24 23:04:41
408 | 3.99 | 2005-05-24 23:03:39
459 | 2.99 | 2005-05-24 22:54:33
549 | 0.99 | 2005-05-24 23:08:07
结论
PostgreSQL BETWEEN
运算符用于检查一个值是否位于一个值区间之内,如果这个值介于指定的区间,BETWEEN
运算符返回真,否则返回假。