平成29年度 春期 午前Ⅱ 問9
データ操作
NULLに関する問題
SQLが提供する3値論理において,Aに5,Bに4,CにNULLを代入したとき,次の論理式の評価結果はどれか。
(A>C) or (B>A) or (C=A)
- アファイ(空)
- イfalse(偽)
- ウtrue(真)
- エunknown(不定)
答えと解説を見る
✓ これが正解エunknown(不定)
解説
unknownを含むorは、真が一つもなければunknownになります。
SQLの比較は、どちらかの値がNULLだと真でも偽でもないunknownになります。見分ける軸は、3つの項をそれぞれ評価してからorで結ぶことです。A>Cは5とNULLの比較なのでunknown、B>Aは4>5で偽、C=AはNULLとの比較なのでunknownです。orは一つでも真があれば真になりますが、ここには真が一つもありません。偽とunknownだけのorは、unknownを真に置き換えると真、偽に置き換えると偽になり、結果が決まらないのでunknownになります。NULLとの比較は等号でも不等号でもunknown、と先に押さえ、orなら真の有無、andなら偽の有無を見るのが3値論理の読み方です。
ほかの選択肢はなぜ違うのか
- アファイ(空):論理式の評価結果は、真・偽・unknownの3つの値のいずれかです。空集合を表す記号は、行の集まりなどを表すときの記号であり、論理式の値として返るものではありません。
- イfalse(偽):偽になるのは、orで結んだ項がすべて偽のときです。ここではNULLとの比較が2つあり、それらはunknownと評価されるので、全体を偽と決めることはできません。
- ウtrue(真):真になるには、orで結んだ項のうち少なくとも一つが真である必要があります。4>5は偽で、残りの2つはNULLとの比較でunknownなので、真になる項がありません。
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問9
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)