我有一个包含公司名称列表的大表,需要一种统一公司名称的方法,例如
- 麦当劳餐厅 = 麦当劳
- 麦当劳快餐=麦当劳
- 麦当劳食品 1234 = 麦当劳
- 麦当劳 = 麦当劳
- McDnld = 麦当劳
- 麦当劳农场不等于麦当劳
- 微软 -> 微软
- 基本要素 -> 基本要素
- Polycom, Inc. -> 宝利通
是否可以在不单独写出每条规则的情况下做到这一点?或者至少生成某个公司名称属于某家公司的可能性百分比?
我有一个包含公司名称列表的大表,需要一种统一公司名称的方法,例如
是否可以在不单独写出每条规则的情况下做到这一点?或者至少生成某个公司名称属于某家公司的可能性百分比?
如果你的不等于会更短,你可以为每一个做一个 NOT LIKE 规则。否则,SQL 真的无法区分彼此。我要做的是制作一个全球公司表,该表将保存基本名称并使用基本商店 ID 绑定到子表。
尝试:
SELECT FROM `company` WHERE `name` LIKE
"%McDonalds%Food%" or "%McDonalds%Restaurant%"
您需要单独处理每种情况,因为您明确%Farm
从结果集中排除。
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.