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

ITパスポート 2024年 93


問題文

関係データベースで管理している“従業員”表から、氏名が“%葉_”に該当する従業員を抽出した。抽出された従業員は何名か。ここで、“_”は任意の1文字を表し、“%”は0文字以上の任意の文字列を表すものとする。
ITパスポート 2024年  問93の問題画像

選択肢

1
2(正解)
3
4

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

氏名が "%葉_" に該当する従業員の抽出数【ITパスポート 解説】

正解の理由

この問題で使われているのは SQL(Structured Query Language:データベースを操作するための言語)の LIKE句(文字列のパターン一致を調べる命令)です。パターン "%葉_" の意味は次の通りです。
  • % は0文字以上の任意の文字列を表すワイルドカード(任意の長さの"あいまい部分")。
  • _ はちょうど1文字の任意の文字を表すワイルドカード(「1文字分の穴」)。
  • パターンの最後が _ で終わっているため、対象の文字列全体の末尾に「葉+1文字」が来るものを探します。つまり「末尾から見て、2文字目が '葉'」という条件です。
表の氏名を後ろから2文字で見ると、末尾が「葉+1文字」になっているのは「千葉翔」と「鈴木葉子」の2名です。したがって、正答は (2)になります。

解法ステップ

  1. パターン "%葉_" の意味を分解する
    • %:先頭側に任意の長さの文字列(0文字可)
    • :文字「葉」
    • _:最後にちょうど1文字が続く(文字列の終わり)
      → 結論:文字列全体の末尾が「葉+任意の1文字」である行を抽出する。
  2. 各氏名の末尾2文字を確認する(後ろから2文字目が「葉」かどうか)
    • 千葉翔:末尾2文字は 「葉」「翔」 → 該当
    • 葉山花子:末尾2文字は 「花」「子」 → 不該当
    • 鈴木葉子:末尾2文字は 「葉」「子」 → 該当
    • 佐藤乙葉:末尾2文字は 「乙」「葉」 → 不該当(葉は末尾で、後ろに文字がない)
    • 秋葉彩葉:末尾2文字は 「彩」「葉」 → 不該当(葉は末尾)
    • 稲葉小春:末尾2文字は 「小」「春」 → 不該当
  3. 該当は「千葉翔」と「鈴木葉子」の2名→答えは2。
実際の SQL 例:
SELECT *
FROM 従業員
WHERE 氏名 LIKE '%葉_';

選択肢別の誤答解説

  • ア: 1
    誤り。末尾が「葉+1文字」になる行は複数あるため1ではない(千葉翔と鈴木葉子の2名が該当)。
  • : 2
    正しい。上の理由どおり、末尾が「葉+1文字」になっているのは2名。
  • ウ: 3
    誤り。末尾の条件を誤解して「名前のどこかに'葉'の次に1文字があれば良い」として秋葉彩葉や稲葉小春を数えると3以上になるが、パターン末尾の位置に注目すると該当しない。
  • エ: 4
    誤り。同様にパターンの末尾条件を無視して数えすぎた結果であり、実際には該当は2名。

よくある誤解

  1. 「%葉_ は '葉' の後に1文字があればどこでもマッチする」
    → 間違いです。パターンに末尾のワイルドカード _ の後にさらに % がなければ、それは文字列の終端に一致する必要があります。今回の %葉_ は末尾が「葉+1文字」であることを意味します。
  2. 文字の扱いを「バイト数」や「英字だけの感覚」で考える
    → 日本語の名前でも SQL の LIKE は文字(文字列)単位での比較が基本です。マルチバイト文字だからといって位置の考え方は変わりません(ただしデータベースの照合順序やエンコーディング設定で細かい挙動が異なる場合がありますが、基本原理は同じです)。

補足コラム

  • ワイルドカードまとめ
    • %:任意の長さ(0文字含む)の文字列。例:%葉% は「どこかに '葉' を含む」
    • _:ちょうど1文字。例:_田 は「先頭が任意の1文字で、その次が田」で2文字の文字列にマッチ
  • 「末尾が '葉'」だけを抽出したい場合は LIKE '%葉' を使います(末尾に '葉' が来る全て)。
  • 「'葉' の後に2文字続く末尾」を調べたいときは LIKE '%葉__' のように _ を2つ使います。
  • ワイルドカードを文字として検索したい場合はエスケープ機能を使います(例:ESCAPE 句)。データベースによって書き方が異なります。

FAQ

Q1. 「%葉_」と「%葉%」の違いは?
A1. %葉_ は文字列全体の末尾が「葉+1文字」であるものだけを選びます。一方 %葉% は氏名のどの位置にあっても「葉」を含むすべてを選びます(末尾である必要はありません)。
Q2. 「佐藤乙葉」はなぜ該当しないのですか?
A2. 「佐藤乙葉」は末尾が「葉」で終わりますが、%葉_ は末尾にさらに1文字があることを要求します。葉が最後にある場合は _ に対応する文字がないためマッチしません。
Q3. ワイルドカードは大文字・小文字を区別しますか?
A3. データベースの設定(照合順序)によります。多くの環境では日本語は大文字小文字の区別が問題になりませんが、英字の大小は照合設定によって変わります。

関連キーワード: SQL、LIKE句、ワイルドカード、% と _、パターンマッチング、文字列検索
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

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

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