SQLが提供する3値論理において, Aに5, Bに4, CにNULLを代入したとき, 次の論理式の評価結果はどれか。
(A>C) or (B>A) or (C=A)
解説
SQLが提供する3値論理において, Aに5, Bに4, CにNULLを代入したとき, 次の論理式の評価結果はどれか。【午前2 解説】
要点まとめ
正解の理由
SQLの3値論理では、NULLは「不明な値」を意味し、比較演算はNULLを含むと「unknown」となります。
よくある誤解
NULLを「false」と誤解し、比較結果を単純に偽と判断することが多いです。
また、OR演算で「unknown」が混じる場合の評価を「true」や「false」と誤認しやすいです。
解法ステップ
- 変数に代入された値を確認する(A=5, B=4, C=NULL)。
- 各比較式
(A > C)
, (B > A)
, (C = A)
を評価する。
- NULLを含む比較は「unknown」となることを理解する。
- OR演算の評価ルールを適用し、結果を導く。
- 最終的な論理式の評価結果を選択肢と照合する。
選択肢別の誤答解説
- ア: ∅(空)
→ 論理式の結果が空集合になることはなく、論理値で評価されるため誤り。
- イ: false (偽)
→ NULLを含む比較は「unknown」であり、falseとは異なるため誤り。
- ウ: true (真)
→ ORの中にtrueがないため、trueにはならず誤り。
- エ: unknown (不定)
→ NULLを含む比較が「unknown」と評価され、OR演算の結果も「unknown」となるため正解。
補足コラム
SQLの3値論理は「true」「false」「unknown」の3つの値を持ち、NULLは「unknown」として扱われます。
論理演算子の評価は以下のように行われます。
- OR:trueがあればtrue、falseのみならfalse、trueなしでunknownがあればunknown。
- AND:falseがあればfalse、trueのみならtrue、falseなしでunknownがあればunknown。
この理解はSQLのWHERE句やJOIN条件の評価に不可欠です。
FAQ
Q: NULLとfalseは同じ意味ですか?
A: いいえ。NULLは「値が不明」であり、falseは「偽」を意味します。比較結果も異なります。
Q: OR演算でunknownが混じるとどうなりますか?
A: trueがあればtrue、なければunknownかfalseとなり、unknownがあれば結果はunknownになります。
関連キーワード: SQL, 3値論理, NULL, 論理演算, OR演算, 比較演算, データベース