文字列を検索する手法 として、よく使われるものに「完全一致」「部分一致」「前方一致」「後方一致」があります。
その他に「中間一致」という手法がありますが、よく「部分一致」と同一だと思われて、仕様書や設計書に「中間一致」と 誤記 されていることが、大手企業 でも 中小企業 でも、しばしば見かけます。
当エントリーは、まず 文字列の代表的な検索手法を 軽く説明してから「部分一致」と「中間一致」の違いを説明します。
完全一致
文字通り、文字列が検索キーワードと完全に一致することです。
SQL だと
WHERE textdata = 'xxx'
というようにイコールで検索します。
前方一致と後方一致
「前方一致」は文字列が検索キーワードから始まることで、
「後方一致」は文字列が検索キーワードで終わることです。
SQLだと「前方一致」は
WHERE textdata LIKE 'abc%'
というように LIKE 句で検索します。
「後方一致」も
WHERE textdata LIKE '%xyz'
というように LIKE 句で検索します。
部分一致
「部分一致」は、文字列の一部が検索キーワードと一致することを示します。
文字列が「ABCDE」の場合、キーワードが「ABC」「BCD」「CDE」などが部分一致します。
SQL だと
WHERE textdata LIKE '%keyword%'
というように LIKE 句で検索します。
この「部分一致」のことを「中間一致」だと言う人が結構多いですのですが、「部分一致」と「中間一致」は違う意味の言葉です。
某大学のサイト内ですら間違った説明がされています。そちらを信じないようにご注意ください。
中間一致
「中間一致」とは、部分一致のうち、前方一致でも後方一致でもないものです。
つまり、検索対象の文字列が「ABCD」の場合、「B」「BC」「C」のみが「中間一致」する検索キーワードだということです。
逆に言えば、「前方一致」「後方一致」「中間一致」はどれも「部分一致の一部」ということですね。
中間一致は SQL だと (部分一致 AND (NOT 前方一致) AND (NOT 後方一致))
なので、
WHERE textdata LIKE '%xyz%'
AND NOT textdata LIKE 'abc%'
AND NOT textdata LIKE '%xyz'
でしょうかね。
⇒間違ってました。
WHERE textdata LIKE '_%abc%_'
ですね。
使うことはほとんど無いでしょうけれど。
「中間一致」というのは、「検索方法」というより「検索時の事象」に近いように思います。
パターン表
下表にパターンをまとめてみましたので、よければご参考にどうぞ。
検索キーワード | 前方一致 | 中間一致 | 後方一致 | 部分一致 | 完全一致 |
---|---|---|---|---|---|
A | o | x | x | o | x |
B | x | o | x | o | x |
C | x | o | x | o | x |
D | x | x | o | o | x |
AB | o | x | x | o | x |
BC | x | o | x | o | x |
CD | x | x | o | o | x |
ABC | o | x | x | o | x |
BCD | x | x | o | o | x |
ABCD | o | x | o | o | o |
おしまい。
多少 間違っていても 意図を汲んで 上手く処理してくれる人は たくさんいますが、いつも そんな方ばかりでは ありませんので、言葉は なるべく 正しく使うようにしたいと思っています。
以上、最後まで お読みいただき、ありがとうございます。
お役に立てたなら幸いです。
コメント
[…] 「部分一致」と「中間一致」の違い 完全一致・前方一致・後方一致 […]