戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2013年 春期 午前(科目A)29


問題文

“BOOKS”表から書名に“UNIX”を含む行を全て探すために次のSQL文を用いる。 aに指定する文字列として、適切なものはどれか。ここで、書名は“BOOKS”表の“書名”列に格納されている。
SELECT * FROM BOOKS WHERE 書名 LIKE '[ a ]'

選択肢

%UNIX
%UNIX%(正解)
UNIX
UNIX%

🔒 解説は解答すると表示されます

LIKEとワイルドカード【午前解説】

正解の理由

問われているのは「書名に文字列 'UNIX' を含む行をすべて抽出する」ことです。SQLのLIKE句で部分一致を表すワイルドカードは % で、任意の文字列(長さ0以上)にマッチします。したがって、文字列の前後に何があっても 'UNIX' を含む行をすべて取り出すには、パターン %UNIX% を使います。これが選択肢のうち正しいもの、すなわち に当たります。
(SQL例)
SELECT * FROM BOOKS WHERE 書名 LIKE '%UNIX%';

解法ステップ

  1. 抽出条件を「部分文字列を含む」に設定する必要があると確認する。
  2. LIKE で部分一致を表すには % を使用することを想起する。
  3. 前後いずれにも任意の文字列が許されるため、パターンは前方と後方に % を付ける:%UNIX%
  4. SQL文に適用して実行する(パターンはクォートで囲むこと)。

選択肢別の誤答解説

  • ア: %UNIX
    • %UNIX は末尾が UNIX で終わる文字列にマッチします。先頭に任意の文字列があってもマッチします(例:ABCUNIX はマッチ)。しかし UNIXBOOK のように UNIX の後ろに文字がある場合はマッチしません。よって「UNIX を含む(前後問わず)」条件を満たさないため不正解です。
  • イ: %UNIX%
    • 前後に % が付いているため、任意の文字列の中に UNIX が含まれていればすべてマッチします。問題の目的に合致するため正解です。
  • ウ: UNIX
    • これは完全一致を意味し、書名がちょうど UNIX の場合にしかマッチしません。部分一致の条件を満たさないため不正解です。
  • エ: UNIX%
    • これは UNIX で始まる文字列(例:UNIXBOOK)にはマッチしますが、前に文字があるもの(例:ABCUNIX)や UNIX が中間にあるものにはマッチしません。従って不正解です。

よくある誤解

  1. % は「1文字以上」を表すと誤解する
    • % は長さ0の部分文字列にもマッチする(空文字列を含む)。したがって %UNIX% は文字列がちょうど UNIX でもマッチします。
  2. データベースによる大/小文字の扱いを考慮しない
    • LIKE の大文字小文字の感度はDBの照合順序(コレーション)による。必要なら UPPER(書名) LIKE '%UNIX%' のように正規化して検索する。

補足コラム

  • 単一文字ワイルドカードは _(アンダースコア)です。例えば UNIX_UNIX の後に1文字ある文字列にマッチします。
  • %_ を文字として検索したい場合はエスケープ句を使います(例:LIKE '%\%%' ESCAPE '\')。
  • 大量データでLIKE '%...%' を多用するとフルテーブルスキャンになりやすく、性能面で問題になることがあります。インデックスを効かせたい場合はプレフィックス検索(UNIX%)や全文検索機能の利用を検討してください。

FAQ

Q1: 大文字小文字を無視して検索したいときは?
A1: DBの照合順序で変わります。一般的には UPPER(書名) LIKE '%UNIX%'書名 ILIKE '%UNIX%'(PostgreSQL)などを使います。
Q2: パターン内の % を文字として検索するには?
A2: エスケープを使います。例:WHERE 書名 LIKE '%\%%' ESCAPE '\'
Q3: インデックスで高速に部分一致検索する方法は?
A3: 前方一致(UNIX%)なら一部のインデックスが使えますが、%UNIX% のような前方にもワイルドカードがある検索は通常インデックスを使えないため、全文検索エンジンや逆インデックス、n-gramインデックス等の利用が現実的です。

関連キーワード: SQL、LIKE、ワイルドカード、部分一致、%記号、_(アンダースコア)、エスケープ、検索最適化
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について