Всем привет! Необходимо реализовать в fb2.5
Помогите пожалуйста!
Пытался реализовать, менял функции и т.д.
Но все безрезультатно (
Помогите пожалуйста!
create procedure LevenshteinDistance(@string1 varchar(4000), @string2 varchar(4000)) as begin set nocount on if (@string1 is null) Raiserror ('Строка 1 не должна быть пустой', 16, 1); if (@string2 is null) Raiserror ('Строка 2 не должна быть пустой', 16, 1); declare @diff int declare @len1 int declare @len2 int set @len1 = len(@string1) set @len2 = len(@string2) declare @m table (i int, j int, val int) declare @i int, @j int set @i = 0 while (@i <= @len1) begin delete @m where i=@i and j=0 insert into @m (i, j, val) values (@i, 0, @i) set @i = @i + 1 end set @j = 0 while (@j <= @len2) begin delete @m where i=0 and j=@j insert into @m (i, j, val) values (0, @j, @j) set @j = @j + 1 end set @i = 1 while (@i <= @len1) begin set @j = 1 while (@j <= @len2) begin if (substring(@string1, @i, 1) = substring(@string2, @j, 1)) set @diff = 0 else set @diff = 1 declare @minval int select @minval = min(val) from ( select isnull(val, 0) + 1 as val from @m where i = @i-1 and j = @j union select isnull(val, 0) + 1 as val from @m where i = @i and j = @j-1 union select isnull(val, 0) + @diff as val from @m where i = @i-1 and j = @j-1 ) t delete @m where i=@i and j=@j insert into @m (i, j, val) values (@i, @j, isnull(@minval, 0)) set @j = @j + 1 end set @i = @i + 1 end declare @retval int select @retval = isnull(val, 0) from @m where i = @len1 and j = @len2 return @retval end
Пытался реализовать, менял функции и т.д.
Но все безрезультатно (