EDIT_DISTANCE (Transact-SQL) (wersja zapoznawcza)

Dotyczy: Sql Server 2025 (17.x) Punkt końcowy analizy SQLusługi Azure SQL Managed Instanceusługi Azure SQL Database w usłudzeMicrosoft Fabric i magazynie wbazie danych Microsoft Fabric SQL Database w usłudze Microsoft Fabric

Note

Jako funkcja w wersji zapoznawczej technologia przedstawiona w tym artykule podlega dodatkowym warunkom użytkowania dla wersji zapoznawczych platformy Microsoft Azure.

Oblicza odległość edycji między dwoma ciągami tekstów, czyli minimalną liczbę wstawek, usunięcia, podstawień i transpozycji potrzebnych do przekształcenia jednego ciągu w drugi.

Note

  • EDIT_DISTANCE jest w wersji zapoznawczej.
  • EDIT_DISTANCEjest dostępny w SQL Server 2025 (17.x).
  • EDIT_DISTANCEjest dostępny w usłudze Azure SQL Managed Instance z zasadami aktualizacji zawszeup-toSQL Server 2025 lub Always-up-to.

Syntax

EDIT_DISTANCE (
    character_expression
    , character_expression [ , maximum_distance ]
)

Arguments

character_expression

Alfanumeryczne wyrażenie danych znaków. character_expression może być stałą, zmienną lub kolumną. Wyrażenie znaku nie może być typu varchar(max) ani nvarchar(max).

maximum_distance

Opcjonalna wartość określająca maksymalną odległość edycji do obliczenia. maximum_distance jest liczbą całkowitą. Gdy maximum_distance jest większe lub równe 0, funkcja może zakończyć przetwarzanie, gdy ustali, że odległość edycji przekracza określoną wartość.

Jeśli rzeczywista odległość edycji jest mniejsza lub równa maximum_distance, funkcja zwraca rzeczywistą odległość. W przeciwnym razie funkcja zwraca maximum_distance + 1.

Jeśli maximum_distance nie jest określona lub jest ujemna, funkcja zwraca rzeczywistą odległość edycji. Jeśli maximum_distance jest , NULLfunkcja zwraca NULL.

Wartość zwracana

int

Funkcja ta implementuje algorytm Damerau-Levenshtein (Optimal String Alignment), zwracając odległość między dwoma character_expressions, lub maximum_distance wartość, jeśli jest mniejsza.

Jeśli którykolwiek z danych wejściowych jest NULL , funkcja zwraca NULL wartość.

Remarks

Jeśli rzeczywista odległość jest większa niż maximum_distance, funkcja zwraca maximum_distance + 1.

Przykłady

Odp. Obliczanie odległości edycji między dwoma słowami

Poniższy przykład porównuje dwa wyrazy i zwraca EDIT_DISTANCE() wartość jako kolumnę o nazwie Distance.

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

Returns:

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

B. Oblicz odległość edycji między dwoma słowami ograniczoną maksymalną wartością

Poniższy przykład porównuje dwa słowa i zwraca limit EDIT_DISTANCE() do wartości maksymalnej.

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

Oto zestaw wyników.

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

Więcej przykładów można znaleźć w EDIT_DISTANCE przykładzie w przeglądzie dopasowania ciągów rozmytych.