【发布时间】:2011-05-11 22:38:23
【问题描述】:
我的 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 或整数值
干杯。
【问题讨论】:
-
你确定它运行了两次吗?该函数是否有副作用,还是只是重复地将一个值映射到另一个值?
-
它在我的 WHERE 子句中出现了两次,所以据我所知,它运行了两次?两次都传递了相同的参数值,所以我想减少这种使用。
-
在您上面的代码中,仅当 () 内的测试为 false 时,该函数才会运行两次。你能多展示一些 where 子句吗?
标签: sql sql-server-2005 tsql where-clause user-defined-functions