1

会社名のリストが記載された大きなテーブルがあり、会社名を統一する方法が必要です。

  • マクドナルドレストラン=マクドナルド
  • マクドナルドファーストフード=マクドナルド
  • マクドナルドフード1234=マクドナルド
  • マクドナルド=マクドナルド
  • McDnld=マクドナルド
  • マクドナルドファームはマクドナルドと同じではありません
  • マイクロソフト->マイクロソフト
  • ベアエッセンシャル->ベアエッセンシャル
  • ポリコム株式会社->ポリコム

各ルールを個別に書き出すことなくこれを行う方法はありますか?または、少なくとも、ある会社名が特定の会社に属する可能性について、ある種のパーセンテージを生成しますか?

4

3 に答える 3

2

試す:

SELECT FROM `company` WHERE `name` LIKE
    "%McDonalds%Food%" or "%McDonalds%Restaurant%"

結果セットから明示的に除外しているため、各ケースを個別に処理する必要があります%Farm

于 2012-09-25T16:23:57.343 に答える
2

等しくない場合は、それらのそれぞれに対して NOT LIKE ルールを実行できます。そうしないと、SQL が 2 つを区別する方法が実際にはありません。私がすることは、ベース名を保持し、ベース ストア ID を持つ子テーブルに関連付けるグローバルな会社テーブルを作成することです。

于 2012-09-25T16:26:58.723 に答える
1

簡単な答えは...いいえ、少なくともSQLではありません。

この種のヒューリスティックな名前のマ​​ッチングは、多くの研究の対象となっています。

多くのSQL実装にはSoundex関数がありますが、これは従来のアングロサクソン人の名前(1世紀前に広く使用されていた)に対してのみうまく機能します(「よく」の定義の場合)。Soundexのいくつかの問題については、http://www.immagic.com/eLibrary/ARCHIVES/GENERAL/LAS_US/L030206B.pdfを参照してください。

于 2012-09-25T16:51:48.977 に答える