ray88’s diary

お仕事で困ったとき用の自分用の覚書

SQL指南書 3値倫理 ② unknown

SQL指南書 3値倫理とNULLの扱い - ray88’s diary
【前提条件】
真理値のunknownとNULLの一種であるUNKNOWN(未知)は異なるものである。
全社は真理値のれっきとした値だが、後者は値でも変数でもない
※以降の記述について、前者を小文字でunkonown 後者を大文字でUNNOWNと表記する

--こちらはれっきとした真理値の比較
unknown = unknown  --結果は true となる
--こちらは要するに NULL = NULL
UNKNOWN = UNKNOWN  --結果は unknown となる

SQLが従う3真理値のパターン
【基本パターン】
・x が t (真) の場合、NOT x は f (偽)
・x が u (不明) の場合、NOT x も u (不明)
・x が f (偽) の場合、NOT x は t (真)

※真と偽の場合、NOT演算はそれぞれの逆の値を返す。
不明の場合、NOT演算はその値をそのまま返す。
これは、不明な値に対する真偽の判定ができないため、結果も不明となるという3値論理の特性を示している。

【基本パターンの具体例】
信号機があり、赤、黄、青の3つの色がある。
赤は「止まる」、黄は「わからない」、青は「進む」という意味です。
もし「進む」の反対を求めると「止まる」になり、逆もまた真です。
しかし、「わからない」の反対はどうでしょうか?それはやはり「わからない」のままです。
これが3値論理の考え方です。

【ANDとORの3値倫理】
※それぞれより強い方が結果として残る

【例題】