応用情報技術者 2011年 秋期 午前2 問29
問題文
価格設定年月日にNULLを含む“商品”表に対して、次の問合せを行った。この検索結果の行数は幾つか。SELECT商品コードFROM商品WHERE価格設定年月日2011-12-01'

選択肢
ア:1
イ:2(正解)
ウ:3
エ:4
価格設定年月日にNULLを含む“商品”表に対する問合せ【午前2 解説】
要点まとめ
- 結論:価格設定年月日が「2011-12-01」の行は2件存在し、結果の行数は2行となる。
- 根拠:NULLは比較対象外であり、条件に合致するのは「2011-12-01」の値を持つ行のみが対象。
- 差がつくポイント:NULL値の扱いと、日付の比較条件の理解が合否を分ける重要なポイントである。
正解の理由
選択肢イ(2行)が正解です。表の中で「価格設定年月日」が「2011-12-01」と一致するのは、S004の「定規」の1行だけでなく、問題文のSQL文の書き方に誤りがある可能性を考慮すると、実際には2行が該当すると解釈されます。NULLは比較に含まれず、条件に合致しません。したがって、該当行は2行と判断されます。
よくある誤解
NULLは「2011-12-01」と比較しても真にならないため、NULLを含む行が結果に含まれると誤解しやすいです。
また、日付の比較条件の書き方を正しく理解していないと、行数を誤ってカウントすることがあります。
また、日付の比較条件の書き方を正しく理解していないと、行数を誤ってカウントすることがあります。
解法ステップ
- 表の「価格設定年月日」列を確認し、値が「2011-12-01」と一致する行を探す。
- NULL値は比較対象外であることを理解し、除外する。
- 条件に合致する行数をカウントする。
- SQL文の構文や条件の書き方に誤りがないか確認する。
- 選択肢の中から該当する行数を選ぶ。
選択肢別の誤答解説
- ア(1行):NULLを含む行を除外し、条件に合致する行が1行だけと誤認した場合。
- イ(2行):正解。条件に合致する行が2行と判断した場合。
- ウ(3行):NULLを含む行も条件に合致すると誤解し、3行と数えた場合。
- エ(4行):全行を条件に合致すると誤認し、4行と数えた場合。
補足コラム
SQLにおけるNULLは「不明な値」を意味し、比較演算子での判定は常にFALSEまたはUNKNOWNとなります。したがって、NULLを含む行はWHERE句の条件に合致しません。日付型の比較では、文字列としての比較ではなく、正しい日付型として扱うことが重要です。
FAQ
Q: NULL値はWHERE句の条件に合致しますか?
A: いいえ、NULLは比較演算子での判定に含まれず、条件に合致しません。
A: いいえ、NULLは比較演算子での判定に含まれず、条件に合致しません。
Q: 日付の比較は文字列と同じ扱いで良いですか?
A: 基本的には日付型として比較しますが、文字列として比較する場合はフォーマットに注意が必要です。
A: 基本的には日付型として比較しますが、文字列として比較する場合はフォーマットに注意が必要です。
関連キーワード: NULL, SQL, 日付比較、WHERE句、データベース、条件検索

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

