令和6年度93テクノロジ系

ITパスポート 令和6年度 問93:databaseに関する問題

関係データベースで管理している"従業員"表から、氏名が "%葉_" に該当する従業員を抽出した。抽出された従業員は何名か。ここで、"_" は任意の1文字を表し、"%" は0文字以上の任意の文字列を表すものとする。従業員: S001=千葉翔, S002=葉山花子, S003=鈴木葉子, S004=佐藤乙葉, S005=秋葉彩葉, S006=稲葉小春。

  • a1
  • b2正答
  • c3
  • d4
正答:B2

AI解説(初心者・標準・上級)

理解度に合わせて3レベルの解説を無料で読めます。

初心者向けまずはここから。やさしく要点を解説

答えは b「2名」 です。

条件の「%葉_」は、しりとりの形を決めるルールです。「%」はどんな文字が何個あってもOK、「_」はちょうど1文字だけ。つまり「最後から2文字目が『葉』で、そのあとに1文字つく名前」を探します。

実際に当てはめると…

  • 千葉翔 → …葉+翔(1文字)でピッタリ!◯
  • 鈴木葉子 → …葉+子(1文字)でピッタリ!◯
  • 葉山花子・佐藤乙葉・秋葉彩葉・稲葉小春 → 「葉」のあとの文字数が合わない ✕

だから当てはまるのは2名です。

👉 覚え方:「_」は1文字ぶんの空席。「%」は何でも入る自由席。

標準試験対策の基準レベル

なぜこれが正解か

正解は b(2名)。パターン「%葉_」は、(1)先頭に0文字以上の任意文字列「%」、(2)文字「葉」、(3)任意の1文字「_」、で名前が終わることを意味する。つまり『末尾2文字目が葉で、最後に1文字続く』氏名が該当する。

  • 千葉翔:…葉+翔 → 該当◯
  • 鈴木葉子:…葉+子 → 該当◯
  • 葉山花子:葉の後に「山花子」3文字で「_」(1文字)に合わず ✕
  • 佐藤乙葉:末尾が「葉」で後ろに文字がなく「_」を満たさない ✕
  • 秋葉彩葉:同上、末尾が葉で後続なし ✕
  • 稲葉小春:葉の後に「小春」2文字で合わず ✕

よって該当は2名。

ひっかけ注意

「_」は『必ず1文字』を表す点が最大のポイント。末尾が「葉」で終わる(後ろに何もない)名前を数えてしまうと誤答する。「%」=0文字以上(0文字も可)、「_」=ちょうど1文字、と厳密に区別して数える。

上級誤答論破・背景理論まで深掘り

理論的背景

SQL(Structured Query Language)のLIKE演算子はパターンマッチング検索に使用され、ワイルドカード文字として「%(0文字以上の任意文字列)」と「_(任意の1文字)」を使用する(SQL標準:ISO/IEC 9075)。本問のパターン「%葉_」の解析:「%」は「葉」の前に0文字以上の任意文字列が許可(「葉」で始まる・何かが前にある・または「葉」が先頭でも可)、「葉」は固定文字「葉」、「_」は「葉」の直後に必ず1文字が存在することを要求。各従業員名の判定:S001=千葉翔:「千」%に対応、「葉」固定、「翔」_に対応→マッチ。S002=葉山花子:「葉」の直後に「山」1文字があるが、その後に「花子」があり「_」の1文字を超える→「葉山花子」が「%葉_」に合致するには「葉山花子」の中で「葉○(1文字)」という終端パターンが必要→「葉山」の部分が「葉_」にあたり、その後に「花子」が残るためマッチしない(全文字列が「%葉_」で始まり終わるパターンのみ有効)→不一致。S003=鈴木葉子:「鈴木」%、「葉」固定、「子」_→マッチ。S004=佐藤乙葉:末尾が「葉」で「_」(1文字)がない→不一致。S005=秋葉彩葉:「秋葉彩」%、「葉」固定、末尾に_がない→不一致(または「秋」%「葉彩葉」で…「葉彩」部分に「_」1文字不一致)。S006=稲葉小春:「稲」%、「葉」固定、「小」_1文字後に「春」が残り1文字制限を超える→不一致。正解はS001(千葉翔)とS003(鈴木葉子)の2名。

実務での使われ方

LIKE演算子は日本語データベース検索・名寄せ処理・ファジーマッチングに実務で広く使用される。人事システムでの氏名検索・顧客DBの部分一致検索・ログ解析でのパターン抽出等が典型用途。ただしLIKE検索はB-Treeインデックスを効率的に使用できないケースが多く(前方一致の「山田%」はインデックス使用可能だが、後方・中間一致の「%山田%」はフルテーブルスキャンになりやすい)、大規模データベースでは全文検索エンジン(Elasticsearch・Solr・PostgreSQLのFull Text Search・MySQL FULLTEXT)への置き換えが性能上推奨される。より高度なパターンマッチングにはREGEXP(正規表現)演算子が使用され、PostgreSQL・MySQL・MariaDB等で利用可能。LIKE演算子のエスケープ処理(%・_そのものを検索したい場合)も実務では重要で、`ESCAPE`節を使って任意のエスケープ文字を指定できる。

試験での位置づけ

SQL LIKE演算子のパターンマッチングはITパスポートの「テクノロジ系/データベース(SQL)」で定期的に出題される。本問のようにデータ(従業員名6件)を実際にパターンに当てはめて件数を数える問題は、「計算ミス」「パターン解釈ミス」が発生しやすい難問として機能する。典型的な誤答パターン:「秋葉彩葉」が「%葉_」にマッチすると誤判断する(「秋葉彩」%・「葉」固定・「_」は末尾1文字なので末尾「葉」に対して後続1文字がない)、または「葉山花子」がマッチすると誤判断する(「葉山」の後に「花子」2文字が残り_の1文字制限を超える)。基本情報技術者(FE)ではWHERE句の複合条件(AND/OR/NOT)・NULL処理(IS NULL/IS NOT NULL)・サブクエリ・JOINによる複数テーブル照合・GROUP BY・HAVING・ORDER BYまで問われる。

選択肢の発展補足

本問の難しさは「全6名のデータを正確にパターン適用する作業」にあり、特にS005=秋葉彩葉(「秋葉」%・「彩」?・「葉」末尾)とS006=稲葉小春(「稲」%・「葉」固定・「小春」2文字で_1文字制限を超える)の判定が誤りやすい。検証の高速化テクニック:「末尾に○+1文字で終わる名前を探す」と読み替えると「葉+1文字で終わる」→千葉翔(葉翔)・鈴木葉子(葉子)の2名と素早く特定できる。この読み替えは「%葉_」を右から読んで「_(1文字)の直前が葉・その前は何でもよい」と解釈することに相当する。発展として、SQLのパターンマッチングの近年の拡張としてSIMILAR TO(SQL標準の正規表現LIKE)・POSIX正規表現マッチング(PostgreSQL:~・~・!~・!~演算子)・REGEXP(MySQL/MariaDB)があり、より複雑なパターン(電話番号・メールアドレス・郵便番号の形式チェック等)への対応が実務で求められている。

出典・引用について

出典:IPA(情報処理推進機構)公式 ITパスポート試験 令和6年度93/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。

テクノロジ系の他の過去問

55
security
56
database
57
database
58
technology_element
59
network

あなたの弱点を診断して、合格までの最短ルートを

この分野を連続演習し、AIがあなたの弱点を分析。合格ナビならITパスポートの過去問を解きながら学べます。