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-242005-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 运算符返回真,否则返回假。