EDIT_DISTANCE (Transact-SQL) 預覽

適用於:SQL Server 2025 (17.x) Azure SQL Database AzureSQL Managed InstanceSQL Analytics endpoint in Microsoft Fabric and Warehouse in Microsoft FabricSQL database in Microsoft Fabric

Note

作為預覽功能,本文所述的技術受限於 Microsoft Azure 預覽版增補使用規定

計算兩個字串之間的 編輯距離 ,也就是將一個字串轉換成另一個字串所需的最少插入、刪除、替換和換位次數。

Note

  • EDIT_DISTANCE 處於預覽狀態。
  • EDIT_DISTANCE可在 SQL Server 2025(17.x)中使用。
  • EDIT_DISTANCE 可在 Azure SQL 受控執行個體中使用 SQL Server 2025一律up-to日期更新原則

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

範例

答: 計算兩個單字之間的編輯距離

下列範例會比較兩個單字,並將值當做名為 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範例