過去問解きまくり研究所 ホーム

平成27年度 春期 午前 問26

データベース

NULLに関する問題

“電話番号”列に NULL を含む“取引先”表に対して,SQL 文を実行した結果の行数は幾つか。

取引先

取引先コード取引先名電話番号
1001A 社010-1234-xxxx
2001B 社020-2345-xxxx
3001C 社NULL
4001D 社030-3011-xxxx
5001E 社(010-4567-xxxx)

〔SQL 文〕
SELECT * FROM 取引先 WHERE 電話番号 NOT LIKE '010%'

答えと解説を見る

✓ これが正解ウ3

解説

値の無い行は、否定しても戻ってきません。

設問は、電話番号の列に値の無い行を含む取引先の表に対して、NOT LIKEを使った問合せを実行したときの行数を問うています。読みどころは二つです。一つは、010で始まるという条件が先頭の3文字を見るものであって、どこかに010を含むという意味ではないこと。もう一つは、値の無い行の扱いです。5行を一行ずつ当てます。先頭が010の行は条件に当てはまるので、否定されて落ちます。先頭が020の行と030の行は残ります。先頭の1文字が括弧である行は010で始まらないので、これも残ります。値の無い行は落ちます。SQLの比較は真と偽の二つではなく、真、偽、不定の三つで考えるからです。分からない値が010で始まるかどうかも分からないため判定は不定となり、不定を否定しても不定のままです。WHERE句は真の行だけを通すので、不定の行は残りません。よって残るのは3行です。

ほかの選択肢はなぜ違うのか

出典:平成27年度 春期 応用情報技術者試験 午前 問26

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)