以下语句在SQL Server 2012中返回不同的SOUNDEX
值,而它们在SQL Server 2008中生成相同值:
PRINT SOUNDEX('BAKHSHI') --B200
PRINT SOUNDEX('Bakhshi') --B220
有没有其他人在SQL Server 2012中遇到此问题并知道如何解决它?
答案 0 :(得分:1)
根据https://msdn.microsoft.com/en-us/library/bb510680.aspx:
SOUNDEX函数实现以下规则:如果是大写的H或 大写字母W分隔两个具有相同数字的辅音 SOUNDEX代码,右边的辅音被忽略如果一组 并排辅音在SOUNDEX代码中具有相同的编号 除第一个外,它们被排除在外。附加规则可能导致 由SOUNDEX函数计算的值不同于 在早期兼容级别下计算的值。升级到之后 兼容级别110,您可能需要重建索引,堆, 或CHECK使用SOUNDEX函数的约束。更多 信息,请参阅SOUNDEX(Transact-SQL)
因此,您可能希望尝试遵循Microsoft的升级路径建议。此外,SOUNDEX是校对敏感的 - 您的2012 DB校对是否与2008校对相同?