ホーム > データベーススペシャリスト試験 > 2017年
データベーススペシャリスト試験 2017年 午前2 問09
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」と誤認しやすいです。
また、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は「偽」を意味します。比較結果も異なります。
A: いいえ。NULLは「値が不明」であり、falseは「偽」を意味します。比較結果も異なります。
Q: OR演算でunknownが混じるとどうなりますか?
A: trueがあればtrue、なければunknownかfalseとなり、unknownがあれば結果はunknownになります。
A: trueがあればtrue、なければunknownかfalseとなり、unknownがあれば結果はunknownになります。
関連キーワード: SQL, 3値論理, NULL, 論理演算, OR演算, 比較演算, データベース