EDIT_DISTANCE (Transact-SQL) предварительная версия

Применимо к:Конечная точка аналитики SQLServer 2025 (17.x) Базы данныхSQL Azure в Microsoft Fabric и хранилище вбазе данных SQL Microsoft Fabric в Microsoft Fabric

Note

В отношении технологии (как предварительной версии функции), описанной в этой статье, действуют дополнительные условия использования предварительных версий Microsoft Azure.

Вычисляет расстояние редактирования между двумя строками, то есть минимальное количество вставок, удалений, подстановок и транспозиций, необходимых для преобразования одной строки в другую.

Note

  • EDIT_DISTANCE находится в предварительной версии.
  • EDIT_DISTANCEдоступна в версии SQL Server 2025 (17.x).
  • EDIT_DISTANCEдоступен в Управляемом экземпляре SQL Azure с политикой обновлениядаты sql Server 2025 или Always-up-to-date.

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_distance равна NULL, функция возвращает NULL.

Возвращаемое значение

int

Эта функция реализует алгоритм Damerau-Levenshtein (Optimal String Alignment) для возврата расстояния между двумя 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 пример в обзоре Fuzzy string matching.