在SQL Server 2008列中查找类似的匹配项

时间:2015-09-24 20:33:14

标签: sql-server sql-server-2008

我在表格中有一个数据类型为varchar(30)的列TreeName,它具有在表格中输入错误的类似条目,如:

ABC

ABC

-ab c

abc

桉树

桉树;

'eucalyptus

eucalyptu s

我们无法控制条目,但我们需要找到类似的匹配并更正它们。在同一列中找到可能的类似匹配(SQL Query)的最佳方法是什么?查询应该返回(abc] abc,-ab c)值类似于abc。找到这些匹配后,我们会使用正确的值更新表。 谢谢!

1 个答案:

答案 0 :(得分:2)

如果您没有合法条目列表,则没有明确的方法可以执行此操作,但您可以实施良好的启发式方法。

首先,如果非字母字符不相关,您可以删除它们。从您的样本中,您似乎不是在寻找拼写错误,只是随机插入非字母字符。然后,编写删除非法字符的函数和按该函数的结果分组的查询将应用于您的值

如果你想补偿更复杂的拼写错误,你需要更复杂的方法。

SSIS中的

Fuzzy grouping可用于查找属于同一组的行。剩下的由你决定。它类似于严格分组(我们在SQL中执行的分组),但是容忍值的微小差异。

如果您可以创建合法条目列表,Levenshtein Distance可以使用Can Be Implemented in SQL来查找与合法条目相近的行。