单个SQL查询来处理NULL和非NULL值

时间:2014-02-07 13:43:51

标签: sql sql-server comparison ansi-sql

我有一个存储过程,其参数可以是NULL或非NULL值。 我需要在WHERE子句中比较此参数。如果参数为非NULL,则

where ...
and parameter = non-NULL-value

会奏效。

但是当参数为null时,它将不符合ANSI标准:

where ...
and parameter = NULL

我不想写两个单独的查询。如何在同一查询中确保ANSI合规性?

1 个答案:

答案 0 :(得分:4)

假设该值在@value参数中传递给您的查询,您可以这样做:

SELECT *
FROM MyTable
WHERE (@value IS NOT NULL AND parameter = @value) -- Or simply parameter = @value
   OR (@value IS NULL AND parameter IS NULL)