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

選択肢
- ア:1
- イ:2
- ウ:3
- エ:4
- ア
- イ
- ウ
- エ
正解と解き方・学習ポイント(AI解説)
関係データベースの検索条件で用いるワイルドカード「%(0文字以上の任意の文字列)」と「(任意の1文字)」の意味を踏まえて、「氏名」が「%葉」に一致する行が表の中に何件あるかを判断する問題です。
Point
この問題は、関係データベースで文字列を抽出するときに、ワイルドカード「%」と「_」を含むパターンがどのような文字列に一致するかを理解しているかを確認することをねらいとしています。
解くために必要な知識
この問題を解くには、関係データベースにおけるパターン照合(LIKEなど)とワイルドカードの意味を理解している必要があります。
用語の整理
| 用語名 | 意味 |
|---|---|
| 関係データベース | データを表(行と列)で管理するデータベースです。 |
| ワイルドカード | 検索条件で、任意の文字や文字列を表すために使う記号です。 |
| パターン照合 | 文字列が指定したパターンに一致するかで抽出することです。 |
ワイルドカード(%と_)の意味
%(パーセント)
-
0文字以上の任意の文字列を表します。
-
例
- 条件:%葉
- 一致例:佐藤乙葉、秋葉彩葉
_(アンダースコア)
-
任意の1文字を表します。
-
例
- 条件:葉_
- 一致例:葉子、葉翔
- 不一致例:葉(1文字が足りない)、葉山花子(1文字を超える)
「%葉_」の読み方
-
「どこかに葉があり、その直後に1文字が続く」文字列に一致します。
-
したがって、次のケースは一致しません。
- 「葉」で終わる(例:佐藤乙葉)
- 「葉」の直後が2文字以上続く(例:稲葉小春)
問題の解法手順
注目点は、「_」が「任意の1文字」であり、「葉」の直後に必ず1文字が必要になることです。
図表の読み取り
画像の「従業員」表の氏名は次の6件です。
-
千葉翔
-
葉山花子
-
鈴木葉子
-
佐藤乙葉
-
秋葉彩葉
-
稲葉小春
条件「%葉_」の意味
条件の分解
-
%:先頭は0文字以上の任意の文字列
-
葉:文字「葉」が含まれる
-
_:「葉」の直後に任意の1文字がある
一致する氏名の形
-
どこかに「葉」があり、その直後に1文字が続く氏名が対象です。
-
「葉」で終わる氏名は対象外です。
-
「葉」の直後が2文字以上続く場合は、「葉_」の部分に収まりません。
各氏名の判定
| 氏名 | 判定 | 理由 |
|---|---|---|
| 千葉翔 | 一致 | 「葉」の直後が「翔」の1文字 |
| 葉山花子 | 不一致 | 「葉」の直後が「山花子」で1文字を超える |
| 鈴木葉子 | 一致 | 「葉」の直後が「子」の1文字 |
| 佐藤乙葉 | 不一致 | 「葉」の直後の1文字が存在しない(「葉」で終わる) |
| 秋葉彩葉 | 不一致 | 「葉」の直後が「彩葉」で2文字 |
| 稲葉小春 | 不一致 | 「葉」の直後が「小春」で2文字 |
一致するのは2名なので、正解は「イ」です。
選択肢ごとの解説
- ア:不正解
一致する氏名は2件あるため、1件は誤りです。「葉」の直後に1文字がある氏名をすべて数えられていない可能性があります。
- イ:正解
「%葉_」に一致するのは「千葉翔」と「鈴木葉子」の2件です。よって2が正しいです。
- ウ:不正解
抽出件数が3名になるには、さらに1件一致する必要があります。しかし「佐藤乙葉」は末尾が「乙葉」で末尾2文字の先頭が「葉」ではなく、「秋葉彩葉」も末尾が「彩葉」で同様に一致しません。
- エ:不正解
「葉」を含む氏名をすべて数えると過大になります。「_」は任意の1文字なので、「葉」の直後が2文字以上の氏名や「葉」で終わる氏名は除外されます。
まとめ
関係データベースの検索条件で用いるワイルドカード「%(0文字以上の任意の文字列)」と「(任意の1文字)」の意味を踏まえて、「氏名」が「%葉」に一致する行が表の中に何件あるかを判断する問題です。
テクノロジ系 > 技術要素 > データベース
一致する氏名は2件あるため、1件は誤りです。「葉」の直後に1文字がある氏名をすべて数えられていない可能性があります。
「%葉_」に一致するのは「千葉翔」と「鈴木葉子」の2件です。よって2が正しいです。
抽出件数が3名になるには、さらに1件一致する必要があります。しかし「佐藤乙葉」は末尾が「乙葉」で末尾2文字の先頭が「葉」ではなく、「秋葉彩葉」も末尾が「彩葉」で同様に一致しません。
「葉」を含む氏名をすべて数えると過大になります。「_」は任意の1文字なので、「葉」の直後が2文字以上の氏名や「葉」で終わる氏名は除外されます。