WHERE条件中的SQL UDF

时间:2010-01-06 00:01:18

标签: sql-server user-defined-functions

我想写一个像这样的查询:

CREATE PROCEDURE DupFinder
@FirstName varchar(20),
@LastName varchar(20)

AS

SELECT CustId 
  FROM Cust c 
 WHERE [dbo].[fn_MatchConfidence](@FirstName + ' ' + @LastName,
                                  [dbo].fn_createCustHash (CustId)) > .8

在整个Cust表上运行fn_MatchCondifence用户定义函数(它接受两个varchars并返回一个数字)。 CreateCustHash只是创建一个FirstName和LastName字符串,中间有一个空格。

我该怎么做?

1 个答案:

答案 0 :(得分:6)

不要使用标量函数。他们真的很糟糕。

http://msmvps.com/blogs/robfarley/archive/2009/12/05/dangers-of-begin-and-end.aspx

相反,使用内联表值函数。