我有一个存储过程,其参数可以是NULL或非NULL值。 我需要在WHERE子句中比较此参数。如果参数为非NULL,则
where ...
and parameter = non-NULL-value
会奏效。
但是当参数为null时,它将不符合ANSI标准:
where ...
and parameter = NULL
我不想写两个单独的查询。如何在同一查询中确保ANSI合规性?
答案 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)