3値論理とは?さんちろんり
3値論理とは、SQLの条件式が真・偽・不定(unknown)の3つの値を取ること。NULLは「値が不明または該当なし」を表す印であって値そのものではないため、NULLを含む比較は = でも <> でも真偽が定まらず、すべてunknownになる。WHERE句は真と判定された行だけを通すので、unknownの行は静かに消える。
最終更新:2026-10-06
この語が出る過去問を解く →背景
現実の業務データには「まだ決まっていない」「そもそも存在しない」項目が必ず混じる。これをゼロや空文字で代用すると集計値が狂うため、値の不在を表す印としてNULLが導入された。ところが不明な値と何かを比べても答えは出せないので、真と偽の2つでは評価結果を書き表せなくなり、第三の値が要ることになった。件数が合わない不具合の多くはこの一段を飛ばした結果として起きる。
具体例
会員表の退会日が在籍中はNULLだとする。ここで「WHERE 退会日 <> '2025-04-01'」と書くと、在籍中の会員は比較がunknownになるため一人も返らない。在籍中を含めたければ「WHERE 退会日 IS NULL OR 退会日 <> '2025-04-01'」のようにIS NULLで明示的に拾う必要がある。
試験での引っ掛け
ANDは一つでも偽があれば残りがunknownでも偽に確定し、ORは一つでも真があれば真に確定する。真とunknownのAND、偽とunknownのORがunknownのまま残る点が問われる。NOT unknownもunknownで真偽は反転しない。さらにWHERE句とON句がunknownの行を採用しないのに対し、CHECK制約は偽と評価されたときだけ違反とみなすため、unknownの行は素通りする。
関連用語
出た過去問
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問9(IPA)
SQLが提供する3値論理において、Aに5、Bに4、CにNULLを代入したとき、次の論理式の評価結果はどれか。 (A > C) or (B > A) or (C …
正解:unknown(不定)
要点:NULLとの比較はunknown、false ORするとunknownのまま
NULLとの比較演算の結果はtrueでもfalseでもなくunknownになる。ここではCがNULLなので(A>C)と(C=A)はいずれもunknown、(B>A)は4>5でfalseとなる。ORはunknownとfalseの組合せではunknownになるため、式全体の評価結果はunknownである。
出典:令和7年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7(IPA)
SQLの3値論理において、a, bに入る字句の組合せはどれか。 "真 AND 不定"は[ a ]であり、"偽 AND 不定"は[ b ]である。
正解:a: 不定 / b: 偽
要点:3値論理のANDは偽で確定、真だと不定が残る
SQLはNULLの扱いのために真・偽・不定の3値論理を採る。ANDでは、片方が偽ならもう片方の値にかかわらず結果は必ず偽に確定する。一方、片方が真の場合は結果がもう片方に委ねられるため、相手が不定なら結果も不定のままになる。ORではこれが裏返り、片方が真なら結果は真に確定する。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。