检查在T-SQL中比较两个字符串的拼写错误

时间:2013-02-19 03:34:49

标签: tsql pattern-matching data-scrubbing

我们制定了一系列确定重复联系人记录的业务规则,这些规则的基础是首先检查同一名称,然后比较其他字段,如电话号码,电子邮件,电话等。

问题是只有一小部分记录被捕获并自动清理/合并。

要捕获更多我希望包含的记录或检查联系人姓名中的拼写错误(例如Michael = Micheal)。

是否有一个很好的功能我可以用来检查拼写错误,以便返回更准确的结果?我认为一个函数可以找到比较两个字符串的单个字符差异。

1 个答案:

答案 0 :(得分:4)

请记住,大多数字符串相似度测量算法是计算密集型的,并且根据手头的工作量,T-SQL在性能方面可能是一个糟糕的选择。

代替字符串相似性度量 per-se ,考虑哈希函数,特别是保留字的主“结构”的那些。哈希码的优点是它们仅使用一个字符串作为输入计算一次,然后可以在具有普通等式谓词的[TSQL]过滤器中使用(与相似度测量不同,这意味着您运行每个可能的参考字符串的算法)。一个看似合理的哈希码建议是 SOUNDEX ,它恰好特别适合人和公司名称的典型变化,并且也“本地”实现为{{3 }}

最好为名称字段中的每个单词计算soundex代码,例如为“Charles Darwin”等输入生成两个代码,为“Jean Jacques Rousseau”等生成三个代码并提高性能,您可能需要找到一种区分姓氏与给定名称的方法,以方便您的过滤条件。

如果您更喜欢使用字符串相似性方法,我发现TSQL functionLevenstein distance可以很好地处理小错误,例如拼写错误。与Soundex一样,您仍然可以考虑单独处理单词,然后介绍处理给定名称条目的多个值的难度,但也允许使用名称更积极地处理典型情况,其中某些实例是订单名然后是姓氏和其他相反顺序的实例(或者省略或缩写名称的部分)。