我有一个业务需求,我们需要对存储在数据库中的记录进行一些疯狂的名称匹配,我想知道是否有任何简单的方法可以使用 SQL Server 来做到这一点。
存储在数据库中的名称:Austin K 要从 UI 匹配的名称:Austin Kierland
那只是一个样本。实际上,可能有很多不同的排列和组合。
如果反过来,我可以使用通配符,但在这种情况下,数据库中的名称小于搜索条件。
有什么建议么?
我有一个业务需求,我们需要对存储在数据库中的记录进行一些疯狂的名称匹配,我想知道是否有任何简单的方法可以使用 SQL Server 来做到这一点。
存储在数据库中的名称:Austin K 要从 UI 匹配的名称:Austin Kierland
那只是一个样本。实际上,可能有很多不同的排列和组合。
如果反过来,我可以使用通配符,但在这种情况下,数据库中的名称小于搜索条件。
有什么建议么?
您可以使用 LIKE 运算符进行正常搜索,该运算符确定特定字符串是否与指定模式匹配。您将遇到的问题是返回多条记录或不正确人员的可能性。我自己对商业应用程序也有类似的要求,解决该问题的最佳方法是要求其他合格值,而不仅仅是名称。如果您在没有其他合格数据的情况下进行部分名称搜索,您肯定会遇到误报匹配和/或多条记录。在我的例子中,我构建了一个 Web 服务来检查资格,允许对名字和姓氏进行文本搜索,但还添加了出生日期、主要人员 SSN 和性别,以确保匹配的人确实是要搜索的人。
实际上 - 不。数据库用于比较绝对值,而不是用于杂乱的比较。他们在内部存储数据的方式不适合真正混乱的匹配。实际上,即使是像谷歌这样的超级强大的专用搜索引擎,它有很多混乱的匹配功能,在没有先验知识的情况下也无法完成你的示例。
我不知道该要求的措辞如何,但我要么用“技术上不可能”来拍摄功能请求,要么实施一个规则集来尝试混乱的匹配 - 例如,你可以轻松地“硬编码”输入大写单词时会执行多次搜索,将它们缩短为一个字母。不知道这是否可以解决您的问题。