コラム
トップページ → コラム
3値論理における論理演算の結果
3値論理は真(true)と偽(false)と不定(unknown)の3つの値がでてきます。
不定(unknown)はSQLではNULLに相当する…と思って大丈夫だと思っています。
AND
| true | false | unknown(null) | |
|---|---|---|---|
| true | true | false | unknown(null) |
| false | false | false | false |
| unknown(null) | unknown(null) | false | unknown(null) |
OR
| true | false | unknown(null) | |
|---|---|---|---|
| true | true | true | unknown(null) |
| false | true | false | unknown(null) |
| unknown(null) | true | unknown(null) | unknown(null) |
NOT
| NOT | |
|---|---|
| true | false |
| false | true |
| unknown(null) | unknown(null) |
※NULLとunknownは違うそうで、確かにその通りな気がするのですが、ではNULL AND NULLという演算をした場合、unknown AND unknownだと思うのですが、NULLとunknownは違うのであれば、はNULL AND NULLという演算をどう考えればいいか分かりませんでした…
ちなみに、PostgreSQLではSELECT NULL AND NULLはNULLが返ります。
SELECT CASE WHEN ( NULL AND NULL ) IS NULL THEN 1 ELSE 0 ENDを実行してみてください。