アプリケーション開発における文字列の一致条件としてよく使われるものに、「完全一致」「部分一致」「前方一致」「後方一致」があります。
その他に「中間一致」という一致条件がありますが、滅多に使われることはなく、使われている場合でも誤用していることが多いです。
その誤用は 大手企業のドキュメントでも 中小企業のドキュメントでも、しばしば見かけます。
当エントリーは、まず 文字列の代表的な一致条件を 軽く説明してから「部分一致」と「中間一致」の違いを説明します。
完全一致
「完全一致」とは文字通り、文字列が検索キーワードと完全に一致することです。
SQLで完全一致検索を行うにはイコールを使い、次のように書きます。
WHERE textdata = 'abc'
前方一致 / 後方一致
「前方一致」とは文字列が検索キーワードから始まることで、
「後方一致」とは文字列が検索キーワードで終わることです。
SQLで前方一致検索を行うには LIKE句 を使い、次のように書きます。
WHERE textdata LIKE 'abc%'
SQLで後方一致検索を行うには LIKE句 を使い、次のように書きます。
WHERE textdata LIKE '%xyz'
部分一致
「部分一致」とは、文字列の一部が検索キーワードと一致することを示します。
検索対象の文字列が「ABCDE」の場合、「ABC」「BCD」「CDE」などが部分一致する検索キーワードです。
SQLで部分一致検索を行うには LIKE句 を使い、次のように書きます。
WHERE textdata LIKE '%keyword%'
この「部分一致」のことを「中間一致」だと言う人が結構多いですのですが、「部分一致」と「中間一致」は違う意味の言葉です。
某大学のサイト内ですら間違った説明がされていますので、そちらは信じないようにご注意ください。
中間一致
「中間一致」とは、部分一致のうち、前方一致でも後方一致でもない一致です。
つまり、検索対象の文字列が「ABCD」の場合、「B」「BC」「C」のみが「中間一致」する検索キーワードだということです。
式で書くと『中間一致 = (部分一致 AND (NOT 前方一致) AND (NOT 後方一致))』になります。
逆に言えば、「前方一致」「後方一致」「中間一致」はどれも「部分一致の一部」ということですね。
SQLで中間一致検索を行うには LIKE句 を使い、次のように書きます。
WHERE textdata LIKE '_%abc%_'
中間一致で検索することは滅多に無いでしょう。
中間一致は「検索方法」というよりは「事象」に近いように思います。
パターン表
検索文字列が「ABCD」の場合の一致パターンを表示にしてみました。
検索キーワード | 一致箇所 | 前方一致 | 中間一致 | 後方一致 | 部分一致 | 完全一致 |
---|---|---|---|---|---|---|
A | ABCD | ○ | × | × | ○ | × |
B | ABCD | × | ○ | × | ○ | × |
C | ABCD | × | ○ | × | ○ | × |
D | ABCD | × | × | ○ | ○ | × |
AB | ABCD | ○ | × | × | ○ | × |
BC | ABCD | × | ○ | × | ○ | × |
CD | ABCD | × | × | ○ | ○ | × |
ABC | ABCD | ○ | × | × | ○ | × |
BCD | ABCD | × | × | ○ | ○ | × |
ABCD | ABCD | ○ | × | ○ | ○ | ○ |
(まとめ) 部分一致と中間一致の違い
“どこでもいいから一致する”のが 部分一致 であり、
“端っこを除いたどこかが一致する”のが 中間一致 です。
部分一致 は 中間一致 を含みます。
ということで、部分一致 と 中間一致 の違いは、一致箇所の範囲です。
(余談) 完全一致に部分一致は含むのか
『部分一致 は 一部分だけ が一致することではないのか』、『完全一致 と 部分一致 は両立しないのではないか』という疑問を持たれるかたも多いでしょう。
その答えは、言葉を使う場面により異なります。
単に「部分一致」と言っても、「事象としての部分一致」と「検索条件としての部分一致」で意味合いが少し違います。
事象としての話であれば、全体の一部分が一致した場合に「部分一致した」と言い、完全に一致した場合は 部分一致したとは言わず、「完全一致した」と言います。
ですので、事象としては 完全一致 と 部分一致 が両立することはありません。
しかし、アプリケーションの設計書で検索条件として「部分一致」と書かれている場合ですと、部分一致は「完全一致」を含みます。
言い換えれば、部分一致でデータを検索した結果、完全一致するデータが見つかることもある、と言うことです。
ややこしいですね(笑)
おわりに
言葉が多少間違っていても、その意図を汲んで上手く処理してくれる人は沢山いますが、毎度そんな方ばかりとは限りませんので、言葉は なるべく 正しく使うようにしたいと思っています。
以上、最後までお読みいただき、ありがとうございました。
この情報がお役に立てれば幸いです。