förhandsversion av EDIT_DISTANCE (Transact-SQL)

Gäller för: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL Analytics-slutpunkt i Microsoft Fabric och Warehouse i Microsoft FabricSQL Database i Microsoft Fabric

Note

Som en förhandsgranskningsfunktion omfattas tekniken som presenteras i den här artikeln av kompletterande användningsvillkor för Förhandsversioner av Microsoft Azure.

Beräknar redigeringsavståndet mellan två strängar, vilket är det minsta antalet insättningar, raderingar, substitutioner och transpositioner som krävs för att omvandla en sträng till en annan.

Note

  • EDIT_DISTANCE är i förhandsversion.
  • EDIT_DISTANCEfinns tillgänglig i SQL Server 2025 (17.x).
  • EDIT_DISTANCEär tillgängligt i Azure SQL Managed Instance med sql Server 2025- eller always-up-to-date update-principen.

Syntax

EDIT_DISTANCE (
    character_expression
    , character_expression [ , maximum_distance ]
)

Arguments

character_expression

Ett alfanumeriskt uttryck för teckendata. character_expression kan vara en konstant, variabel eller kolumn. Karaktärsuttrycket kan inte vara av typen varchar(max) eller nvarchar(max).

maximum_distance

Ett valfritt värde som specificerar det maximala redigeringsavståndet att beräkna. maximum_distance är ett heltal. När maximum_distance är större än eller lika med 0, kan funktionen sluta bearbeta när den fastställer att redigeringsavståndet överstiger det angivna värdet.

Om det faktiska redigeringsavståndet är mindre än eller lika med maximum_distance, returnerar funktionen det faktiska avståndet. Annars returnerar funktionen maximum_distance + 1.

Om maximum_distance inte är specificerat, eller om det är negativt, returnerar funktionen det faktiska redigeringsavståndet. Om maximum_distance är NULL, returnerar NULLfunktionen .

Returvärde

int

Denna funktion implementerar Damerau-Levenshtein-algoritmen (Optimal String Alignment) för att returnera avståndet mellan de två character_expressions, eller maximum_distance värde om det är mindre.

Om någon av indata är NULL returnerar funktionen ett NULL värde.

Remarks

Om det faktiska avståndet är större än maximum_distance returnerar funktionen maximum_distance + 1.

Examples

A. Beräkna redigeringsavstånd mellan två ord

I följande exempel jämförs två ord och värdet returneras EDIT_DISTANCE() som en kolumn med namnet Distance.

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

Returns:

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

B. Beräkna redigeringsavstånd mellan två ord begränsat av ett maximalt värde

Följande exempel jämför två ord och returnerar den EDIT_DISTANCE() begränsade till ett maximalt värde.

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

Här är resultatet.

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

För fler exempel, se det EDIT_DISTANCE exemplet i översikten över Fuzzy-strängmatchning.