三項論理¶
SQL 標準で指定されているように、3値論理(3VL)は、 TRUE、 FALSE、そして UNKNOWN という3つの真理値を持つ論理システムです。Snowflakeでは、 UNKNOWN は NULLで表されます。3値論理は、ブール式と述語の評価に適用され、 AND、 OR、 NOTなどの論理演算の結果に影響を与えます。
- 式(例えば、 SELECT リスト)で使用された場合、 UNKNOWN の結果は NULL の値として返されます。 
- 述語として使用された場合(例えば、 WHERE 句)、 UNKNOWN の結果は FALSE に評価されます。 
このトピックの内容:
真理値テーブル¶
このセクションでは、 比較 および 論理 演算子の真理値表について説明します。
比較演算子¶
比較演算子のオペランドが NULLの場合、結果は NULLです。比較演算子と関数は以下の通りです。
論理演算子¶
BOOLEAN 列 C が与えられた場合:
| 
 | 
 | 
 | 
 | 
|---|---|---|---|
| TRUE | NULL | TRUE | FALSE | 
| FALSE | FALSE | NULL | TRUE | 
| NULL | NULL | NULL | NULL | 
追加条件:
| 
 | 
 | 
 | 
 | 
|---|---|---|---|
| TRUE | FALSE | TRUE | FALSE | 
| FALSE | FALSE | TRUE | NULL | 
| NULL | NULL | NULL | NULL | 
条件式の使用上の注意¶
このセクションでは、条件式固有の動作について説明します。
IFF 動作¶
IFF は三項論理に対して以下の結果を返します。 BOOLEAN 列 C が与えられた場合:
| 
 | 
 | 
|---|---|
| TRUE | 
 | 
| FALSE | 
 | 
| NULL | 
 | 
[ NOT ] IN 動作¶
[ NOT ] IN は三項論理に対して以下の結果を返します。3の数値列 c1、 c2、 c3 が与えられた場合:
- c1 IN (c2, c3, ...)は、構文的には- (c1 = c2 OR c1 = c3 OR ...)と同等です。- その結果、 - c1の値が NULLの場合、式- c1 IN (c2, c3, NULL)は常に NULLに評価されます。
- c1 NOT IN (c2, c3, ... )は、構文的には- (c1 <> c2 AND c1 <> c3 AND ...)と同等です。- したがって、 - c1 NOT IN (c2, c3)が TRUEであっても、- c1 NOT IN (c2, c3, NULL)は NULLと評価されます。