У меня есть функция, которая работает так: select score from comparestrings(@String1,@string2) Мне нужно сравнить каждую строку в таблице (@ string2) с @ string1. Возможно ли это без цикла while и курсора? Моя функция пришла из simmetrics из библиотеки
select score from comparestrings(@String1,@string2)
Код функции ниже:
ALTER FUNCTION [dbo].[BlockDistance](@firstword [nvarchar](255), @secondword [nvarchar](255)) RETURNS [float] WITH EXECUTE AS CALLER AS EXTERNAL NAME [TextFunctions].[StringMetrics].[BlockDistance]
Сравнивает ли строка сравнения UDF, который возвращает таблицу?
Вместо этого просто заставьте его вернуть scalar value и сделайте следующее:
scalar value
select comparestrings(@string1, tablestring) from yourtable
Не называйте это построчно.
Сохраните его строка за строкой с вычисляемым столбцом , если входные данные являются константами или столбцами из одной строки.
ALTER TABLE Mytable ADD Score AS comparestrings(Col1,Col2)
Тогда вы можете СОХРАНИТЬ и проиндексировать его тоже