1

我有一个包含公司名称列表的大表,需要一种统一公司名称的方法,例如

  • 麦当劳餐厅 = 麦当劳
  • 麦当劳快餐=麦当劳
  • 麦当劳食品 1234 = 麦当劳
  • 麦当劳 = 麦当劳
  • McDnld = 麦当劳
  • 麦当劳农场不等于麦当劳
  • 微软 -> 微软
  • 基本要素 -> 基本要素
  • Polycom, Inc. -> 宝利通

是否可以在不单独写出每条规则的情况下做到这一点?或者至少生成某个公司名称属于某家公司的可能性百分比?

4

3 回答 3

2

如果你的不等于会更短,你可以为每一个做一个 NOT LIKE 规则。否则,SQL 真的无法区分彼此。我要做的是制作一个全球公司表,该表将保存基本名称并使用基本商店 ID 绑定到子表。

于 2012-09-25T16:26:58.723 回答
2

尝试:

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

您需要单独处理每种情况,因为您明确%Farm从结果集中排除。

于 2012-09-25T16:23:57.343 回答
1

The short answer is...no, at least not in SQL.

This sort of heuristic matching of names has been the subject of a lot of research.

Many SQL implementations have a Soundex function, but that works well (for some definition of "well") only for conventional Anglo-Saxon names (that were widely used a century ago). See http://www.immagic.com/eLibrary/ARCHIVES/GENERAL/LAS_US/L030206B.pdf for some issues with Soundex.

于 2012-09-25T16:51:48.977 回答