SOUNDEX (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统 (PDW)Microsoft Fabric 中的 SQL 分析端点Microsoft Fabric 中的仓库

返回一个四个字符(SOUNDEX)代码,以评估两个字符串的相似性。

Transact-SQL 语法约定

语法

SOUNDEX ( character_expression )

参数

character_expression

字符数据的字母数字 表达式。 character_expression 可以是常量、变量或列。

返回类型

varchar

备注

SOUNDEX 将字母数字字符串转换为四个字符的代码,该代码基于在英语中说话时字符串听起来的方式。 该代码的第一个字符是 character_expression 的第一个字符,已转换为大写。 代码的第二个字符到第四个字符是表示表达式中的字母的数字。 除非是字符串的第一个字母,否则将忽略字母 AEIOUHWY。 如果需要生成一个四字符代码,将在末尾添加零。 有关 SOUNDEX 代码的详细信息,请参阅 Soundex 索引系统

可以比较来自不同字符串的 SOUNDEX 代码,看看说话时字符串听起来有多相似。 DIFFERENCE() 函数对两个字符串执行 SOUNDEX,并返回一个整数,表示这些字符串的 SOUNDEX 代码的相似程度。

SOUNDEX 区分排序规则。 可以嵌套字符串函数。

SOUNDEX 兼容性

在早期版本的 SQL Server 中,SOUNDEX 函数应用了 SOUNDEX 规则的子集。 在数据库兼容级别 110 或更高级别下,SQL Server 应用一组更完整的规则。

升级到兼容级别 110 或更高版本后,可能需要重新生成使用 SOUNDEX 函数的索引、堆或 CHECK 约束。

  • 在通过运行以下语句重新生成堆之前,无法查询包含使用 SOUNDEX 定义的持久计算列的堆:

    ALTER TABLE <table> REBUILD;
    
  • 升级后,将禁用使用 SOUNDEX 定义的 CHECK 约束。 若要启用约束,请运行以下语句:

    ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL;
    
  • 在通过运行以下语句重新生成索引之前,无法查询包含使用 SOUNDEX 定义的持久计算列的索引(包括索引视图):

    ALTER INDEX ALL ON <object> REBUILD;
    

示例

一个。 使用 SOUNDEX

以下示例演示 SOUNDEX 函数和相关 DIFFERENCE 函数。 在第一个示例中,返回所有辅音字母的标准 SOUNDEX 值。 返回 SmithSOUNDEXSmythe 返回相同的 SOUNDEX 结果,因为不包括所有元音、字母 y、双精度字母和字母 h

SELECT SOUNDEX('Smith'),
       SOUNDEX('Smythe');

结果集如下。 对 Latin1_General 排序规则有效。

S530  S530

B. 使用 DIFFERENCE

DIFFERENCE 函数用于比较 SOUNDEX 模式结果的差异。 以下示例显示两个仅元音字母不同的字符串。 返回的差异为 4(可能的最小差异)。

SELECT DIFFERENCE('Smithers', 'Smythers');
GO

结果集如下。 对 Latin1_General 排序规则有效。

4

在以下示例中,字符串的辅音字母不同;所以,返回的差异为 2,表示差异更大。

SELECT DIFFERENCE('Anothers', 'Brothers');
GO

结果集如下。 对 Latin1_General 排序规则有效。

2