1

以下语句SOUNDEX在 SQL Server 2012 中返回不同的值,而在 SQL Server 2008 中生成相同的值:

PRINT SOUNDEX('BAKHSHI') --B200

PRINT SOUNDEX('Bakhshi') --B220

有没有其他人在 SQL Server 2012 中遇到过这个问题并且知道如何解决它?

4

1 回答 1

1

根据https://msdn.microsoft.com/en-us/library/bb510680.aspx

SOUNDEX 函数实现以下规则: 如果大写 H 或大写 W 分隔 SOUNDEX 代码中具有相同编号的两个辅音,则忽略右侧的辅音 如果一组并排的辅音具有相同的编号在 SOUNDEX 代码中,除了第一个之外,所有这些都被排除在外。附加规则可能会导致 SOUNDEX 函数计算的值与在早期兼容级别下计算的值不同。升级到兼容级别 110 后,您可能需要重建使用 SOUNDEX 函数的索引、堆或 CHECK 约束。有关详细信息,请参阅 SOUNDEX (Transact-SQL)

因此,您可能想尝试遵循 Microsoft 的升级路径建议。此外,SOUNDEX 对排序规则敏感 - 您的 2012 数据库排序规则与您的 2008 排序规则相同吗?

于 2015-03-04T05:06:41.213 回答