SQLの論理値は3(3値論理)

      2020/01/31

通常のプログラミング言語の論理値:True,False
SQLの論理値           :True,False,Unknown

●SQLは第三の値Unknownを持つ
●NULLについては、2種類ある
①未知(Unknown)
⇒値でも変数でもない。そこに値がないことを示すための
視覚的マーク、目印にすぎない。
②適用不能(Not Applicable)
⇒「N/A」
 不明(サングラスをかけた人の目の色)ではなく、
    無意味(冷蔵庫の目の色⇒冷蔵庫に目の色という属性は適用不能)

●SQLにはNULLは1種類しか存在しない⇒①Unknown

●なぜ、「=NULL」ではなく、「IS NULL」と書かなければならないか?
⇒NULLに比較述語(=,>,<)を用いると、結果がUnknownになるから。
※比較述語が適用できるのは値のみであり、NULLは値でも変数でもない。
クエリの結果として選択されるのは、WHERE句の条件評価がtrueになる行のみで、false、unknownの行は選択されない。

<Unknownに評価される式>
・1 = NULL
・2 > NULL
・3 < NULL
・4 <> NULL
・NULL = NULL
・NULL > NULL
・NULL < NULL
・NULL <> NULL

「IS NULL」⇒「IS」が述語で、「NULL」が値とみられがちだが、「IS NULL」で1つの述語とみなすべき。
※SQLには、「IS TRUE」,「IS FALSE」があるが、これとは別の構造を持つ述語として考える。

ANDTrueUnknownFalse
TrueTUF
UnknownUUU
FalseFUF

ANDの場合の優先順位 : False > Unknown > True

ORTrueUnknownFalse
TrueTUT
UnknownUU U
FalseTUF

ORの場合の優先順位 :  True  > Unknown >  False

 - AccessVBA開発