编写此SQL WHERE子句的更好方法

时间:2010-11-18 09:57:45

标签: sql sql-server-2005 tsql where-clause user-defined-functions

我的SQL语句中有类似于以下WHERE子句的内容:

AND (ipdp.UserID!=dbo.fn_userid(ipdp.ItemID) OR dbo.fn_userid(ipdp.ItemID) IS NULL)

但是,我不喜欢dbo.fn_userid函数如何运行两次。我怎样才能改进这行代码,只需要运行一次?

ipdp.UserID始终为非NULL整数值

dbo.fn_userid可以返回NULL或整数值

干杯。

1 个答案:

答案 0 :(得分:4)

尝试:

 AND ipdp.UserID != ISNULL(dbo.fn_userid(ipdp.ItemID), -1)