比较条件 - Amazon Redshift

比较条件

比较条件阐明两个值之间的逻辑关系。所有比较条件都是具有布尔值返回类型的二进制运算符。Amazon Redshift 支持下表中描述的比较运算符:

操作符 语法 描述
< a < b 值 a 小于值 b。
> a > b 值 a 大于值 b。
<= a <= b 值 a 小于或等于值 b。
>= a >= b 值 a 大于或等于值 b。
= a = b 值 a 等于值 b。
<> 或 != a <> b or a != b 值 a 不等于值 b。
ANY | SOME a = ANY(subquery) 值 a 等于子查询返回的任何值。
ALL a <> ALL or != ALL (subquery)) 值 a 不等于子查询返回的任何值。
IS TRUE | FALSE | UNKNOWN a IS TRUE 值 a 是布尔值 TRUE。

使用说明

= ANY | SOME

ANY 和 SOME 关键字与 IN 条件同义,当比较操作相对于可返回一个或多个值的子查询所返回的至少一个值为 true 时,将返回 true。对于 ANY 和 SOME,Amazon Redshift 仅支持 =(等于)条件。不支持不相等条件。

注意

不支持 ALL 谓词。

<> ALL

ALL 关键字与 NOT IN(请参阅 IN 条件 条件)同义并在表达式未包含在子查询的结果中时返回 true。对于 ALL,Amazon Redshift 仅支持 <> 或 !=(不等于)条件。不支持其他比较条件。

IS TRUE/FALSE/UNKNOWN

非零值等于 TRUE,0 等于 FALSE,null 等于 UNKNOWN。请参阅布尔值类型数据类型。

示例

下面是比较条件的一些简单示例:

a = 5 a < b min(x) >= 5 qtysold = any (select qtysold from sales where dateid = 1882

以下查询返回 VENUE 表中座位数超过 10000 的场地:

select venueid, venuename, venueseats from venue where venueseats > 10000 order by venueseats desc; venueid | venuename | venueseats ---------+--------------------------------+------------ 83 | FedExField | 91704 6 | New York Giants Stadium | 80242 79 | Arrowhead Stadium | 79451 78 | INVESCO Field | 76125 69 | Dolphin Stadium | 74916 67 | Ralph Wilson Stadium | 73967 76 | Jacksonville Municipal Stadium | 73800 89 | Bank of America Stadium | 73298 72 | Cleveland Browns Stadium | 73200 86 | Lambeau Field | 72922 ... (57 rows)

此示例从 USERS 表中选择喜欢摇滚音乐的用户 (USERID):

select userid from users where likerock = 't' order by 1 limit 5; userid -------- 3 5 6 13 16 (5 rows)

此示例从 USERS 表中选择不清楚是否喜欢摇滚音乐的用户 (USERID):

select firstname, lastname, likerock from users where likerock is unknown order by userid limit 10; firstname | lastname | likerock ----------+----------+---------- Rafael | Taylor | Vladimir | Humphrey | Barry | Roy | Tamekah | Juarez | Mufutau | Watkins | Naida | Calderon | Anika | Huff | Bruce | Beck | Mallory | Farrell | Scarlett | Mayer | (10 rows

具有 TIME 列的示例

下面的示例表 TIME_TEST 具有一个列 TIME_VAL(类型 TIME),其中插入了三个值。

select time_val from time_test; time_val --------------------- 20:00:00 00:00:00.5550 00:58:00

以下示例从每个 timetz_val 中提取小时数。

select time_val from time_test where time_val < '3:00'; time_val --------------- 00:00:00.5550 00:58:00

以下示例比较两种时间文本。

select time '18:25:33.123456' = time '18:25:33.123456'; ?column? ---------- t

具有 TIMETZ 列的示例

下面的示例表 TIMETZ_TEST 具有一个列 TIMETZ_VAL(类型 TIMETZ),其中插入了三个值。

select timetz_val from timetz_test; timetz_val ------------------ 04:00:00+00 00:00:00.5550+00 05:58:00+00

下面的示例仅选择小于 3:00:00 UTC 的 TIMETZ 值。将值转换为 UTC 后进行比较。

select timetz_val from timetz_test where timetz_val < '3:00:00 UTC'; timetz_val --------------- 00:00:00.5550+00

以下示例比较两种 TIMETZ 文本。比较时忽略时区。

select time '18:25:33.123456 PST' < time '19:25:33.123456 EST'; ?column? ---------- t