将标量函数应用于每一行

时间:2011-08-01 23:45:23

标签: sql sql-server-2008-r2

我的功能如下: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 个答案:

答案 0 :(得分:2)

comparetrings是一个返回表的UDF吗?

相反,只需让它返回scalar value并执行此操作:

select comparestrings(@string1, tablestring) from yourtable

答案 1 :(得分:1)

请勿逐行调用。

如果输入是来自同一行的常量或列,则

逐行存储 computed column

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

然后你可以PERSIST它并将其编入索引