平成23年度 秋期 午前 問29
データベース
この検索結果の行数
価格設定年月日に NULL を含む“商品”表に対して,次の問合せを行った。この検索結果の行数は幾つか。
SELECT 商品コード FROM 商品 WHERE 価格設定年月日<'2011-12-01' 商品 ┌────────────┬────────────┬──────┬──────────────────┐ │ 商品コード │ 商品名 │ 価格 │ 価格設定年月日 │ ├────────────┼────────────┼──────┼──────────────────┤ │ S001 │ ボールペン │ 150 │ 2009-12-31 │ │ S002 │ 消しゴム │ 80 │ 2008-03-31 │ │ S003 │ 蛍光ペン │ 0 │ NULL │ │ S004 │ 定規 │ 300 │ 2011-12-01 │ └────────────┴────────────┴──────┴──────────────────┘
- ア1
- イ2
- ウ3
- エ4
答えと解説を見る
✓ これが正解イ2
解説
値が分からない行は比較でも残りません。
四つの行に対して、指定された条件を一つずつ当てていけば答えが出ます。条件は、価格設定年月日が 2011-12-01 より前であることです。ここに落とし穴が二つ仕込まれています。一つ目は、不等号に等号が付いていないことです。同じ日付の行は、より前ではないので残りません。二つ目は、値が入っていない行の扱いです。NULL は値が空というより、値が分からないという意味を持ちます。分からないものを何かと比べても、結果は真とも偽とも決まらず、どちらでもない第三の状態になります。問合せの絞り込みは、真と決まった行だけを残す造りなので、この行は落ちます。等号で比べても拾えず、拾いたいときは専用の書き方を使うことになっています。では実際に数えます。2009-12-31 の行と 2008-03-31 の行は、どちらも 2011-12-01 より前ですから残ります。2011-12-01 の行は同じ日付なので残りません。値が入っていない行も残りません。よって検索結果は 2 行です。選択肢が 1 から 4 まで順に並ぶ設問は、どの落とし穴を踏んだかが数字にそのまま表れる造りになっています。
ほかの選択肢はなぜ違うのか
- ア1:残るのを 1 行とした数え方です。日付が入っている行のうち、指定された日より前にあたるものは二つあるので、そのうち片方を余分に落としてしまっている形になります。
- ウ3:残るのを 3 行とした数え方です。これは同じ日付の行まで数えてしまった場合の値で、不等号に等号が付いていないという一つ目の落とし穴を読み落としています。
- エ4:表の四つの行がすべて残るという数え方です。同じ日付の行に加えて、値が入っていない行まで数えており、二つの落とし穴をどちらも踏んでしまった形にあたります。
出典:平成23年度 秋期 応用情報技術者試験 午前 問29
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)