応用情報技術者 2015年 春期 午前2 問26
問題文
“電話番号”列にNULLを含む“取引先”表に対して、SQL文を実行した結果の行数は幾つか。

選択肢
ア:1
イ:2
ウ:3(正解)
エ:4
電話番号列にNULLを含む取引先表のSQL実行結果の行数【午前2 解説】
要点まとめ
- 結論:電話番号が「010」で始まらない行は3件で、NULLは除外されるため正解はウの3件です。
- 根拠:
NOT LIKE '010%'
は「010」で始まらない文字列にマッチし、NULLは比較対象外で結果に含まれません。 - 差がつくポイント:NULLの扱いを理解し、
LIKE
演算子の動作とNOT LIKE
の意味を正確に把握することが重要です。
正解の理由
SQL文の条件は「電話番号が'010'で始まらない」行を抽出しています。
- A社の電話番号は「010-1234-xxxx」で「010」で始まるため除外。
- B社は「020-2345-xxxx」で条件に合う。
- C社はNULLで比較できず除外。
- D社は「030-3011-xxxx」で条件に合う。
- E社は「(010-4567-xxxx)」で「010」で始まらない文字列として条件に合う。
よって、B社、D社、E社の3件が抽出されます。
よくある誤解
NULLは「NOT LIKE」条件にマッチしないため、結果に含まれません。NULLを含む行が条件に合うと誤解しやすいです。
解法ステップ
- SQLの
LIKE
とNOT LIKE
の意味を確認する。 - 電話番号列の各値が「010」で始まるかどうかを判定する。
- NULLは比較できず、条件に合わないため除外されることを理解する。
- 条件に合う行数をカウントする。
選択肢別の誤答解説
- ア: 1件は「010」で始まらない行が1件だけと誤認。実際は3件ある。
- イ: 2件はNULLを含めてカウントしなかったか、E社の電話番号を誤認。
- ウ: 3件は正しくB社、D社、E社をカウントしている。
- エ: 4件はNULLを含めてカウントした誤り。NULLは比較対象外で除外される。
補足コラム
SQLにおけるNULLは「不明な値」を意味し、比較演算子では常にFALSEまたはUNKNOWNとなります。
LIKEや
NOT LIKEもNULLに対してはFALSE扱いとなり、結果セットに含まれません。NULLの扱いはSQLの基本であり、試験でも頻出のポイントです。
FAQ
Q: NULLは
A: いいえ、NULLは比較できないため条件に合致せず、結果に含まれません。
NOT LIKEの条件に合致しますか?
A: いいえ、NULLは比較できないため条件に合致せず、結果に含まれません。
Q: 電話番号が「(010-4567-xxxx)」の場合、
A: 「(」が先頭のため「010」で始まらず、条件に合致します。
NOT LIKE '010%'はどう判定されますか?
A: 「(」が先頭のため「010」で始まらず、条件に合致します。
関連キーワード: SQL, NULL, LIKE演算子、NOT LIKE, データベース、条件検索

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

