BETWEEN 范围条件 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

BETWEEN 范围条件

BETWEEN 条件使用关键字 BETWEENAND 测试表达式是否包含在某个值范围中。

语法

expression [ NOT ] BETWEEN expression AND expression

表达式可以是数字、字符或日期时间数据类型,但它们必须是可兼容的。此范围包含起始值。

示例

第一个示例计算有多少个事务登记了 2、3 或 4 票证的销售:

select count(*) from sales where qtysold between 2 and 4; count -------- 104021 (1 row)

范围条件包含开始和结束值。

select min(dateid), max(dateid) from sales where dateid between 1900 and 1910; min | max -----+----- 1900 | 1910

范围条件中的第一个表达式必须是较小的值,第二个表达式必须是较大的值。在以下示例中,由于表达式的值,将始终返回零行:

select count(*) from sales where qtysold between 4 and 2; count ------- 0 (1 row)

但是,应用 NOT 修饰符将反转逻辑并生成所有行的计数:

select count(*) from sales where qtysold not between 4 and 2; count -------- 172456 (1 row)

以下查询将返回拥有 20000 到 50000 个座位的场馆的列表:

select venueid, venuename, venueseats from venue where venueseats between 20000 and 50000 order by venueseats desc; venueid | venuename | venueseats ---------+-------------------------------+------------ 116 | Busch Stadium | 49660 106 | Rangers BallPark in Arlington | 49115 96 | Oriole Park at Camden Yards | 48876 ... (22 rows)

以下示例演示了如何为日期值使用 BETWEEN:

select salesid, qtysold, pricepaid, commission, saletime from sales where eventid between 1000 and 2000 and saletime between '2008-01-01' and '2008-01-03' order by saletime asc; salesid | qtysold | pricepaid | commission | saletime --------+---------+-----------+------------+--------------- 65082 | 4 | 472 | 70.8 | 1/1/2008 06:06 110917 | 1 | 337 | 50.55 | 1/1/2008 07:05 112103 | 1 | 241 | 36.15 | 1/2/2008 03:15 137882 | 3 | 1473 | 220.95 | 1/2/2008 05:18 40331 | 2 | 58 | 8.7 | 1/2/2008 05:57 110918 | 3 | 1011 | 151.65 | 1/2/2008 07:17 96274 | 1 | 104 | 15.6 | 1/2/2008 07:18 150499 | 3 | 135 | 20.25 | 1/2/2008 07:20 68413 | 2 | 158 | 23.7 | 1/2/2008 08:12

请注意,尽管 BETWEEN 的范围包括在内,但日期默认具有 00:00:00 的时间值。示例查询中唯一有效的 1 月 3 日行是 saletime 为 1/3/2008 00:00:00 的行。