代码之家  ›  专栏  ›  技术社区  ›  Chris McCall

WHERE条件下的SQL UDF

  •  2
  • Chris McCall  · 技术社区  · 15 年前

    我想写一个这样的查询:

    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用户定义函数(它接受两个varchar并返回一个数字)。createCustHash只生成一个名和姓的字符串,中间有一个空格。

    我该怎么做?

    1 回复  |  直到 15 年前
        1
  •  6
  •   Rob Farley    15 年前

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

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

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