WHERE子句中的不同条件

时间:2013-10-21 08:52:17

标签: sql-server case where

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您可以尝试使用this answer中的方法,当应用于您的情况时,该方法看起来像这样:

WHERE EXISTS (SELECT IdAgent
              INTERSECT
              SELECT @IdAgent)

您可能需要在特定环境中对其性能进行测试,以确定它的运行速度是否比现有解决方案慢得多。