sql-server - 在 SQL Server 2008 列中查找相似匹配

标签 sql-server sql-server-2008

我在表中有数据类型为 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/

相关文章:

sql-server - 在迭代循环中连接字符串: += does not work as expected

sql - 将具有日期范围的两张表合并为一张表

sql - 将 Access SQL 查询转换为 SqlServer

c# - Entity Framework /Linq to SQL : Skip & Take

sql-server - 如何按字母顺序对字符串进行排序

sql-server - 取消透视凌乱的表格

sql - 如何增加对另一个列值的列关注

c# - 使用数据 MVC 3 .NET 填充多选列表

sql-server - 使用一定范围内的随机数字更新表列

sql-server-2008 - 在将字符串转换为uniqueidentifier时抑制错误