比較條件 - 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 和某些關鍵字與條件,如果已傳回一個或多個值的子查詢,其所傳回的值至少有一個值,則此比較為 true,則會傳回 true。Amazon Redshift 僅支持「任何」和「一些」的 =(等於)條件。不支援不等式條件。

注意

不支援 ALL 述詞。

<> ALL

ALL 關鍵字與 NOT IN 的同義詞(請參閲IN 條件條件),如果表達式未包含在子查詢的結果中,會傳回 true。Amazon Redshift 僅支持 <> 或! =(不等於)所有條件。不支援其他比較條件。

IS TRUE/FALSE/UNKNOWN

非 0 的值等於 TRUE、0 等於 FALSE,而 null 等於 UNKNOWN。請參閱 布林值 (Boolean) 類型 草圖類型 資料類型。

範例

下列是比較條件的一些簡單範例:

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

下列的查詢會從 VENUE 資料表傳回擁有超過 10,000 個座位的場地:

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_VAL(類型時間),其中插入了三個值。

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

具有時間 TEMZ 列的示例

下面的示例表具有一列時間 Z_VAL(類型為時間 TIMEZ),其中插入了三個值。

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。比較是在將值轉換為 UTC 後進行的。

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

下列範例會比較兩個 TIMEZ 文本。比較時區會被忽略。

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