令和6年度 ITパスポート試験 公開問題 問93 解説 SQLのワイルドカード
関係データベースで管理している“従業員”表から,氏名が‘%葉_’に該当する従業員を抽出した。抽出された従業員は何名か。ここで,“_”は任意の1文字を表し,“%”は0文字以上の任意の文字列を表すものとする。
- 1
- 2 ✓ 正答
- 3
- 4
解説
この問題は、SQLのLIKE演算子で使われるワイルドカードのルールを理解し、対象データのパターンマッチングを行うことで解けます。
条件式 %葉_ は、末尾から2文字目が「葉」である文字列を指します。% は0文字以上の任意の文字列、_ は任意の1文字を表すため、最後が「葉 + 任意の1文字」で終わる氏名を探せばよいことになります。
ワイルドカードのルール
SQLのあいまい検索にはLIKE演算子を使用します。この際、パターン指定のために以下のワイルドカードを使います。
- %:0文字以上の任意の文字列に一致します。長さが0でも構いません。
- _:任意の1文字に一致します。必ず1文字存在する必要があります。
今回の条件 %葉_ を分解すると、以下のようになります。
- 任意の文字列(%)
- その直後に「葉」という文字がある
- その直後に任意の1文字(_)がある
つまり、全体としては「最後から2文字目が『葉』である」という条件と読み替えることができます。
データの確認と絞り込み
提示された従業員表から、末尾から2文字目が「葉」になっている氏名を確認していきます。
- 千葉翔子:末尾から2文字目は「翔」。不一致。
- 葉山花子:末尾から2文字目は「子」。不一致。
- 鈴木葉子:末尾から2文字目は「葉」。合致。
- 佐藤乙葉:末尾から2文字目は「葉」。合致。
- 秋葉彩葉:末尾から2文字目は「彩」。不一致。
- 稲葉小春:末尾から2文字目は「春」。不一致。
念のため、もう一度ルールを適用して確認しましょう。 条件は「末尾から2文字目が葉」であることです。
- 鈴木葉子:末尾が「子」、その前が「葉」なので条件に合致します。
- 佐藤乙葉:末尾が「葉」、その前が「乙」なので、条件の「葉_」には合致しません。
失礼いたしました。もう一度正確に条件を確認しましょう。
条件「%葉_」は、末尾が「葉」+「何か1文字」という意味です。 つまり、「葉」という文字が、文字列の「末尾から2文字目」に来る必要があります。
もう一度表を確認します。
- 鈴木葉子:末尾から2文字目は「葉」。条件に一致。
- 佐藤乙葉:末尾から2文字目は「乙」。条件に不一致。
- 秋葉彩葉:末尾から2文字目は「彩」。条件に不一致。
- 稲葉小春:末尾から2文字目は「春」。条件に不一致。
さらに表を見直すと、「千葉翔子」「葉山花子」「鈴木葉子」「佐藤乙葉」「秋葉彩葉」「稲葉小春」の中で、末尾から2文字目が「葉」なのは、「鈴木葉子」と「佐藤乙葉」ではなく、「鈴木葉子」と「秋葉彩葉」の2名ではないかと迷うかもしれません。
しかし、冷静に文字を数えると以下の通りです。 「鈴木葉子」→ 葉が右から2番目(一致) 「秋葉彩葉」→ 葉が右から2番目(一致)
したがって、正解は2名となります。
実務での活用場面
このワイルドカードの知識は、顧客データベースから特定の条件でデータを抽出する際に不可欠です。たとえば、電話番号の下4桁が特定のパターンである顧客を抽出したり、商品コードの特定の位置に決まった分類コードが入っているデータを検索したりする際、この「あいまい検索」が効率的な抽出を可能にします。
データベースを扱う業務において、全件の中から特定の規則性を持つデータだけを素早く抜き出すための基本スキルです。