Применить скалярную функцию к каждой строке - PullRequest
0 голосов
/ 02 августа 2011

У меня есть функция, которая работает так: select score from comparestrings(@String1,@string2)
Мне нужно сравнить каждую строку в таблице (@ string2) с @ string1. Возможно ли это без цикла while и курсора? Моя функция пришла из simmetrics из библиотеки

Код функции ниже:

ALTER FUNCTION 
[dbo].[BlockDistance](@firstword [nvarchar](255), @secondword [nvarchar](255))
RETURNS [float] WITH EXECUTE AS CALLER
AS 
EXTERNAL NAME [TextFunctions].[StringMetrics].[BlockDistance]

Ответы [ 2 ]

2 голосов
/ 02 августа 2011

Сравнивает ли строка сравнения UDF, который возвращает таблицу?

Вместо этого просто заставьте его вернуть scalar value и сделайте следующее:

select comparestrings(@string1, tablestring) from yourtable
1 голос
/ 02 августа 2011

Не называйте это построчно.

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

ALTER TABLE Mytable ADD
    Score AS comparestrings(Col1,Col2)

Тогда вы можете СОХРАНИТЬ и проиндексировать его тоже

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...