我们正在努力调和大约1,000个重复的制造商名称和1,000,000个重复的零件号。有一件事是如何“匹配”像“有限”和“有限公司”这样的东西。与“有限公司”
目的是让应用程序将这些匹配的项目协调为标准格式。所以:
ACME Ltd. ACME有限公司 ACME有限公司
所有人都应该调和到ACME有限公司。
这也将用于防止将来输入其他重复项。
有关如何在SQL Server中完成此模式匹配的任何建议?任何已知的算法来查找具有映射等效性的项目等......?
谢谢!
埃里克。
答案 0 :(得分:3)
如何在一个列中列出您想要的内容以及下一个列中的变体?
Ltd Limited
Ltd Ltd.
St Street
St Str.
然后,如果您在第二列上找到匹配项,则将其更改为第一列。可能需要多次迭代,因为您会找到其他替代方案。
答案 1 :(得分:2)
使用SQL Server Full Text Search您可以使用同义词:
对于每种全文语言,SQL 服务器还提供了一个文件 你可以选择定义 要扩展的特定于语言的同义词 搜索查询的范围(a 同义词库文件)。
在您的情况下,您可以添加如下所示的部分:
<expansion>
<sub>Limited</sub>
<sub>Ltd</sub>
<sub>Ltd.</sub>
</expansion>
Here is a link详细介绍了如何修改同义词库文件。这可能适用于你想要做的事情......
SQL Server还使用LIKE
提供了一些有限的模式匹配。我建议looking over the options提供它,以确定它们是否足以满足您的需求。
如果LIKE
不足,您可以随时look at creating a CLR stored procedure or UDFs使用正则表达式。这将允许您匹配更复杂的模式......