首页 > 解决方案 > SQL 可选参数

问题描述

我正在努力在 MS SQL 2017 中设置可选参数。它应该这样做:

  1. 如果参数为空,则忽略该条件,但应用其他条件
  2. 如果设置了参数,则应用条件

下面的代码仅在设置参数时有效,但如果参数为空,则不显示任何结果。

DECLARE @ShowBenefitsValidatedAfter Date
--SET @ShowBenefitsValidatedAfter = NULL
SET @ShowBenefitsValidatedAfter = DATEADD(month, -1, GETDATE())


WHERE @ShowBenefitsValidatedAfter < IIF(@ShowBenefitsValidatedAfter IS NULL, @ShowBenefitsValidatedAfter, B.BenefitValidationActualDate)
AND B.Status <> 'Cancelled'

你能告诉我,如何修改条件,好吗?

非常感谢!

标签: sqlsql-server

解决方案


这通常表示为:

WHERE (@ShowBenefitsValidatedAfter IS NULL OR 
       B.BenefitValidationActualDate > @ShowBenefitsValidatedAfter
      ) AND 
      B.Status <> 'Cancelled'

几乎所有的比较NULL都将是NULL,包括<。你从比较开始@ShowBenefitsValidatedAfter,所以结果将是NULL


推荐阅读