我在表中有数据类型为 varchar(30) 的 TreeName 列,该列具有在表中错误输入的类似条目,例如:
abc]
abc,
-abc
abc
桉树
桉树;
‘桉树
桉树
我们无法控制条目,但我们需要找到相似的匹配项并进行更正。在同一列中查找可能的相似匹配项(SQL 查询)的最佳方法是什么?该查询应返回 (abc] abc, -ab c) 值与 abc 类似。一旦找到这些匹配项,我们就会使用正确的值更新表。 谢谢!
最佳答案
如果您没有合法条目列表,则没有确切的方法可以做到这一点,但您可以实现良好的启发式方法。
首先,如果非字母字符不相关,您可以将其删除。从您的示例来看,您似乎并不是在寻找拼写错误,而只是在寻找非字母字符的随机插入。然后,编写删除非法字符的函数以及根据应用于您的值的该函数的结果进行分组的查询即可完成这项工作
如果您想弥补更复杂的拼写错误,则需要更复杂的方法。
Fuzzy grouping在 SSIS 中可用于查找属于同一组的行。剩下的就取决于你了。它类似于严格分组(我们在 SQL 中执行的分组),但可以容忍值的微小差异。
如果您可以创建合法条目列表,Levenshtein Distance其中Can Be Implemented in SQL可用于查找接近合法条目的行。
关于sql-server - 在 SQL Server 2008 列中查找相似匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32770400/