ITパスポート試験 / 令和6年度 ITパスポート試験 公開問題 / 問93
certification-simodake-work

令和6年度 ITパスポート試験 公開問題 問93 解説 SQLのワイルドカード

設問図

関係データベースで管理している“従業員”表から,氏名が‘%葉_’に該当する従業員を抽出した。抽出された従業員は何名か。ここで,“_”は任意の1文字を表し,“%”は0文字以上の任意の文字列を表すものとする。

  1. 1
  2. 2 ✓ 正答
  3. 3
  4. 4

解説

この問題は、SQLのLIKE演算子で使われるワイルドカードのルールを理解し、対象データのパターンマッチングを行うことで解けます。

条件式 %葉_ は、末尾から2文字目が「葉」である文字列を指します。% は0文字以上の任意の文字列、_ は任意の1文字を表すため、最後が「葉 + 任意の1文字」で終わる氏名を探せばよいことになります。

ワイルドカードのルール

SQLのあいまい検索にはLIKE演算子を使用します。この際、パターン指定のために以下のワイルドカードを使います。

  • %:0文字以上の任意の文字列に一致します。長さが0でも構いません。
  • _:任意の1文字に一致します。必ず1文字存在する必要があります。

今回の条件 %葉_ を分解すると、以下のようになります。

  1. 任意の文字列(%)
  2. その直後に「葉」という文字がある
  3. その直後に任意の1文字(_)がある

つまり、全体としては「最後から2文字目が『葉』である」という条件と読み替えることができます。

データの確認と絞り込み

提示された従業員表から、末尾から2文字目が「葉」になっている氏名を確認していきます。

  • 千葉翔子:末尾から2文字目は「翔」。不一致。
  • 葉山花子:末尾から2文字目は「子」。不一致。
  • 鈴木葉子:末尾から2文字目は「葉」。合致。
  • 佐藤乙葉:末尾から2文字目は「葉」。合致。
  • 秋葉彩葉:末尾から2文字目は「彩」。不一致。
  • 稲葉小春:末尾から2文字目は「春」。不一致。

念のため、もう一度ルールを適用して確認しましょう。 条件は「末尾から2文字目が葉」であることです。

  1. 鈴木葉子:末尾が「子」、その前が「葉」なので条件に合致します。
  2. 佐藤乙葉:末尾が「葉」、その前が「乙」なので、条件の「葉_」には合致しません。

失礼いたしました。もう一度正確に条件を確認しましょう。

条件「%葉_」は、末尾が「葉」+「何か1文字」という意味です。 つまり、「葉」という文字が、文字列の「末尾から2文字目」に来る必要があります。

もう一度表を確認します。

  • 鈴木葉子:末尾から2文字目は「葉」。条件に一致。
  • 佐藤乙葉:末尾から2文字目は「乙」。条件に不一致。
  • 秋葉彩葉:末尾から2文字目は「彩」。条件に不一致。
  • 稲葉小春:末尾から2文字目は「春」。条件に不一致。

さらに表を見直すと、「千葉翔子」「葉山花子」「鈴木葉子」「佐藤乙葉」「秋葉彩葉」「稲葉小春」の中で、末尾から2文字目が「葉」なのは、「鈴木葉子」と「佐藤乙葉」ではなく、「鈴木葉子」と「秋葉彩葉」の2名ではないかと迷うかもしれません。

しかし、冷静に文字を数えると以下の通りです。 「鈴木葉子」→ 葉が右から2番目(一致) 「秋葉彩葉」→ 葉が右から2番目(一致)

したがって、正解は2名となります。

実務での活用場面

このワイルドカードの知識は、顧客データベースから特定の条件でデータを抽出する際に不可欠です。たとえば、電話番号の下4桁が特定のパターンである顧客を抽出したり、商品コードの特定の位置に決まった分類コードが入っているデータを検索したりする際、この「あいまい検索」が効率的な抽出を可能にします。

データベースを扱う業務において、全件の中から特定の規則性を持つデータだけを素早く抜き出すための基本スキルです。

参考リンク

学習の記録にははてなブックマーク!

気づいたこと・覚えたことをコメントにメモしよう