簡単に言えば、特に純粋な SQL だけでは、これを正確に行う方法はありません。
完全一致を見つけることができ、LIKE
演算子または (潜在的に巨大な) 一連の正規表現を使用してワイルドカード一致を見つけることができますが、同様の一致を見つけることも、一致の潜在的なスペルミスを見つけることもできません。
構築しているアプリケーションの種類に応じて、この問題を解決するために考えられるアプローチがいくつかあります。
まず、データベース内のマーチャント データを正規化します。Bruger Kingなどの正確な未処理の文字列をデータベースに保存しないことをお勧めします。既知の一連のマーチャントと一致しないマーチャントを見つけた場合は、データベース内の何かと既に一致しているかどうかをユーザーに尋ねてください。データが入ったら、それを処理し、既存の既知のマーチャントと照合します。
類似度係数を格納します。Jaccard インデックスのようなものを使用して、2 つの文字列がどの程度類似しているかを判断することができるかもしれません。おそらく数字を取り除いた後、これはかなりうまくいくかもしれません。少なくとも、どの業者かを推測できるユーザー インターフェイスを作成できるようになる可能性があります。また、一部のデータベース エンジンには、のように聞こえるものを記述できるフルテキスト インデックス演算子があります。これらは、調査する価値がある可能性があります。
ユーザーごとの販売者の一致を記憶します。ユーザーがbruger king 123 main stをBurger Kingに修正した場合、その関係を保存し、後でユーザーにプロンプトを表示することなく記憶します。このデータは、他のユーザーがデータを修正するのにも役立ちます。
しかし、UI がない場合はどうなるでしょうか。おそらく、自動化されたデータ処理を行おうとしているのでしょう。上記のテクニックのいくつかは、このプロセスを自動化するのに役立つ可能性がありますが、何らかの人間の介入なしにこれを処理する方法は本当にありません. また、あなたのデータのソースも見てみたいと思います。おそらく、キーとして使用できる個別のマーチャント ID があるか、既知のすべてのマーチャントのリストがどこかに存在する可能性があります (クレジット カード会社がこの API を提供している可能性があります)。処理するデータが大量にある場合は、部分的に自動化する別のオプションがあります。 Amazon のMechanical Turkなどのサービスを使用します。