SOUNDEX (Transact-SQL)
适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统 (PDW)Microsoft Fabric 中的 SQL 分析端点Microsoft Fabric 中的仓库
返回一个四个字符(SOUNDEX
)代码,以评估两个字符串的相似性。
语法
SOUNDEX ( character_expression )
参数
character_expression
字符数据的字母数字 表达式。 character_expression 可以是常量、变量或列。
返回类型
varchar
备注
SOUNDEX
将字母数字字符串转换为四个字符的代码,该代码基于在英语中说话时字符串听起来的方式。 该代码的第一个字符是 character_expression 的第一个字符,已转换为大写。 代码的第二个字符到第四个字符是表示表达式中的字母的数字。 除非是字符串的第一个字母,否则将忽略字母 A
、E
、I
、O
、U
、H
、W
和 Y
。 如果需要生成一个四字符代码,将在末尾添加零。 有关 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
值。 返回 Smith
的 SOUNDEX
,Smythe
返回相同的 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