3値論理¶
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 関数は、3値論理に対して次の結果を返します。 BOOLEAN 列 C
が与えられた場合:
|
|
---|---|
TRUE |
|
FALSE |
|
NULL |
|
[ NOT ] IN 動作¶
[ NOT ] IN 関数は、3値論理に対して次の結果を返します。3の数値列 c1
、 c2
、 c3
が与えられた場合:
c1 IN (c2, c3, ...)
構文的には(c1 = c2 or c1 = c3 or ...)
と同等です。その結果、
c1
の値が NULLの場合、式c1 IN (c2, c3, NULL)
は常に FALSEに評価されます。c1 NOT IN (c2, c3, ... )
は、構文的には(c1 <> c2 AND c1 <> c3 AND ...)
と同等です。したがって、
c1 NOT IN (c2, c3)
が TRUEであっても、c1 NOT IN (c2, c3, NULL)
は NULLと評価されます。