データベーススペシャリスト試験 2017年 午前209


SQLが提供する3値論理において, Aに5, Bに4, CにNULLを代入したとき, 次の論理式の評価結果はどれか。
(A>C) or (B>A) or (C=A)
∅(空)
false (偽)
true (真)
unknown (不定)(正解)

解説

SQLが提供する3値論理において, Aに5, Bに4, CにNULLを代入したとき, 次の論理式の評価結果はどれか。【午前2 解説】

要点まとめ

  • 結論:論理式 (A > C) or (B > A) or (C = A) の評価結果は「unknown (不定)」です。
  • 根拠:SQLの3値論理では、NULLを含む比較は「unknown」と評価され、OR演算は「true」があれば真、なければ「unknown」か「false」となるためです。
  • 差がつくポイント:NULLの扱いと3値論理のOR演算の評価順序を正確に理解しているかが合否を分けます。

正解の理由

SQLの3値論理では、NULLは「不明な値」を意味し、比較演算はNULLを含むと「unknown」となります。
  • (A > C)5 > NULL であり、NULLを含むため「unknown」。
  • (B > A)4 > 5 で「false」。
  • (C = A)NULL = 5 で「unknown」。
    これらを OR で結ぶと、unknown OR false OR unknown となり、ORは「true」が一つもない場合、unknownを返します。
    したがって、評価結果は「unknown (不定)」であり、選択肢のエが正解です。

よくある誤解

NULLを「false」と誤解し、比較結果を単純に偽と判断することが多いです。
また、OR演算で「unknown」が混じる場合の評価を「true」や「false」と誤認しやすいです。

解法ステップ

  1. 変数に代入された値を確認する(A=5, B=4, C=NULL)。
  2. 各比較式 (A > C), (B > A), (C = A) を評価する。
  3. NULLを含む比較は「unknown」となることを理解する。
  4. OR演算の評価ルールを適用し、結果を導く。
  5. 最終的な論理式の評価結果を選択肢と照合する。

選択肢別の誤答解説

  • ア: ∅(空)
    → 論理式の結果が空集合になることはなく、論理値で評価されるため誤り。
  • イ: 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演算, 比較演算, データベース
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ