SQL SOUNDEX函数用于模糊字符串匹配时,有没有办法增加容错能力?我正在使用它来搜索供应商名称。我所拥有的是:
WHERE
SOUNDEX(@SearchTerm) = SOUNDEX(s.Name)
这在某种程度上有效,但我想稍微提高容错性。例如:
SOUNDEX('test') = T230
SOUNDEX('tet') = T300
SOUNDEX('tets') = T320
SOUNDEX('tes') = T200
理想情况下,我希望所有这些示例都匹配。此外,一个小问题是当供应商名称由 2 个单词组成并且用户按第二个单词搜索时,这显然会起作用,因为行进取决于单词的第一个字母:
SOUNDEX('test supplier') = T230
SOUNDEX('supplier') = S146
最初,我在 Web 应用程序中使用了一个模糊字符串比较库,该库使用了各种近似字符串比较算法,但事实证明,当 20 个人同时搜索 5000 多个供应商时,Web 服务器无法处理。我现在尝试在存储过程中执行此操作,以便数据库仅返回搜索结果,而不是要搜索的供应商的完整列表。