有没有办法写这个更简单的方法?
WHERE
(
(@IdAgent IS NULL AND IdAgent IS NULL)
OR
(@IdAgent IS NOT NULL AND IdAgent = @IdAgent)
)
答案 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)
您可能需要在特定环境中对其性能进行测试,以确定它的运行速度是否比现有解决方案慢得多。