0

有没有办法写这个更简单?

WHERE
    (
        (@IdAgent IS NULL AND IdAgent IS NULL)
        OR
        (@IdAgent IS NOT NULL AND IdAgent = @IdAgent)
    )
4

2 回答 2

1

您可以轻松删除一个测试,因为它=永远不会匹配 aNULL和非NULL值:

WHERE
(@IdAgent IS NULL AND IdAgent IS NULL)
OR
  IdAgent = @IdAgent
于 2013-10-21T08:56:27.970 回答
0

您可以尝试使用此答案中的方法,当应用于您的情况时,它看起来像这样:

WHERE EXISTS (SELECT IdAgent
              INTERSECT
              SELECT @IdAgent)

您可能需要在您的特定环境中测试它的性能,看看它的运行速度是否比您当前的解决方案慢很多。

于 2013-10-24T10:38:44.000 回答