

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 比较运算符
<a name="comparison-operators"></a>

比较条件阐明两个值之间的逻辑关系。所有比较条件都是具有布尔值返回类型的二进制运算符。

AWS Clean Rooms Spark SQL 支持下表中描述的比较运算符。


| 运算符  | 语法  | 描述  | 
| --- | --- | --- | 
| \! | \!expression | 逻辑`NOT`运算符。用于否定布尔表达式，这意味着它返回与表达式值相反的值。<br />的！ 运算符也可以与其他逻辑运算符（例如 AND 和 OR）组合使用，以创建更复杂的布尔表达式。 | 
| <  | a < b  | 小于比较运算符。用于比较两个值并确定左边的值是否小于右边的值。 | 
| >  | a > b  | 大于比较运算符。用于比较两个值并确定左边的值是否大于右边的值。 | 
| <=  | a <= b  | 小于或等于比较运算符。用于比较两个值并返回左边的值true是否小于或等于右边的值，false否则返回。 | 
| >=  | a >= b  | 大于或等于比较运算符。用于比较两个值并确定左边的值是否大于或等于右边的值。 | 
| =  | a = b  | 相等比较运算符，它比较两个值并返回它们true是否相等，false否则返回。 | 
| <> 或 \!=  |  a <> b 或 a \!= b  | 不等于比较运算符，它比较两个值，true如果两个值不相等，则返回，false否则返回。 | 
| == | a == b | 标准相等比较运算符，它比较两个值并返回它们true是否相等，false否则返回。 比较字符串值时，== 运算符区分大小写。如果需要执行不区分大小写的比较，则可以在比较之前使用 UPPER () 或 LOWER () 之类的函数将值转换为相同的大小写。  | 

## 示例
<a name="comparison-condition-example"></a>

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

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

以下查询返回所有当前未觅食的松鼠的 id 值。

```
SELECT id FROM squirrels 
WHERE !is_foraging
```

以下查询返回 VENUE 表中座位数超过 1 万的场地：

```
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 列的示例
<a name="comparison-condition-example-time"></a>

下面的示例表 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 列的示例
<a name="comparison-condition-example-timetz"></a>

下面的示例表 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
```