【问题标题】:Better way of writing this SQL WHERE Clause编写此 SQL WHERE 子句的更好方法
【发布时间】: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


【解决方案1】:

试试:

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

【讨论】:

  • 谢谢 Michael,我其实也想过做这样的事情,但不知道效率如何。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-18
  • 2013-01-14
  • 2017-08-19
  • 1970-01-01
相关资源
最近更新 更多