基于特殊字符区分SQL Server中的两个相似条目

时间:2016-09-11 08:52:49

标签: sql-server unicode ascii

我在SQL Server中的表有一些如下所示的条目。

2934046 Kellogg’s Share Your Breakfast  74672   2407522 Kellogg?s Share Your Breakfast  ACTIVE  2015-09-01  9999-12-31

2934046 Kellogg?s Share Your Breakfast  74672   2407522 Kellogg?s Share Your Breakfast  ACTIVE  2015-09-01  9999-12-31

另一个例子可能是

2939508 UOL Ação Social 81534   1527484 UOL Ac?o Social ACTIVE  2015-09-01  9999-12-31
2939508 UOL Ac?o Social 81534   1527484 UOL Ac?o Social ACTIVE  2015-09-01  9999-12-31

可以看出,除了第二个条目中的问号字符外,两个条目都相同。即使我做了像

这样的事情
SELECT DISTINCT * from my_table

没用。我必须想办法根据特殊字符删除这类重复条目。我的经理说带有问号的条目基本上是坏数据,我应该删除它们。有谁知道怎么做?

2 个答案:

答案 0 :(得分:0)

您可以实现damerau-levenshtein算法,该算法评估clr项目中两个字符串的相似程度,并将其用于t-sql。

您可以试验数据以找到正确的阈值,以便接受两个字符串作为重复项。

可以在此处找到算法实现的c#示例:

Damerau - Levenshtein Distance, adding a threshold

答案 1 :(得分:0)

今年我在数据加载活动中面临同样的问题,但我的经理向我提示使用SSIS模糊分组转换来查找相同的记录。请创建小型SSIS包,添加数据流任务。内部数据流任务添加(源+模糊分组+目的地)。

访问 - 添加模糊组变换识别重复项 https://msdn.microsoft.com/en-us/library/jj819770(v=sql.120).aspx