EDIT_DISTANCE(Transact-SQL) 预览版

适用于:Microsoft FabricSQL Microsoft 数据库中Microsoft Fabric 和 Warehouse 中的 Azure SQL 数据库 Azure SQL 数据库Azure SQL 托管实例 SQL 分析终结点,SQL Server 2025 (17.x)

Note

作为预览版功能,本文中介绍的技术受制于 Microsoft Azure 预览版补充使用条款

计算两个字符串之间的 编辑距离 ,即将一个字符串转换为另一个字符串所需的最少插入、删除、替换和换位次数。

Note

  • EDIT_DISTANCE 处于预览状态。
  • EDIT_DISTANCE可在 SQL Server 2025(17.x)中使用。
  • EDIT_DISTANCE 在具有 SQL Server 2025Always-up-to-date更新策略的 Azure SQL 托管实例中可用。

Syntax

EDIT_DISTANCE (
    character_expression
    , character_expression [ , maximum_distance ]
)

Arguments

character_expression

字符数据的字母数字表达式。 character_expression 可以是常量、变量或列。 角色表达式不能是 varchar(max)nvarchar(max) 类型。

maximum_distance

一个可选值,指定要计算的最大编辑距离。 maximum_distance 是一个整数。 当 maximum_distance 大于或等 0于时,函数可能在确定编辑距离超过指定值时停止处理。

如果实际编辑距离小于或等于 maximum_distance,函数返回实际距离。 否则,函数返回 maximum_distance + 1

如果没有指定 maximum_distance ,或者是负值,函数会返回实际的编辑距离。 如果 maximum_distanceNULL,则函数返回 NULL

返回值

int

该函数实现了 Damerau-Levenshtein(最优字符串对齐)算法,返回两个 character_expressions之间的距离,或者如果距离较小则返回 maximum_distance 值。

如果任一输入是 NULL ,则该函数将返回一个 NULL 值。

Remarks

如果实际距离大于 maximum_distance,则函数返回 maximum_distance + 1

例子

A. 计算两个单词之间的编辑距离

下面的示例比较两个单词,并将该值作为列返回 EDIT_DISTANCE() ,命名 Distance

SELECT 'Colour' AS WordUK,
       'Color' AS WordUS,
       EDIT_DISTANCE('Colour', 'Color') AS Distance;

Returns:

WordUK WordUS Distance
------ ------ -----------
Colour Color  1

B. 计算两个单词之间的编辑距离,受最大值限制

以下示例比较两个词,并将极限值返回 EDIT_DISTANCE() 为最大值。

SELECT Source,
       Target,
       EDIT_DISTANCE(Source, Target) AS ActualDistance,
       EDIT_DISTANCE(Source, Target, 2) AS LimitedDistance
FROM (VALUES ('Chocolate', 'Sweets')) AS compare(Source, Target);

结果集如下。

Source    Target    ActualDistance LimitedDistance
--------- --------- -------------- ---------------
Chocolate Sweets    8              3

更多示例请参见模糊字符串匹配概述中的EDIT_DISTANCE示例