SQL 服务器中的 where if not null 条件

Conditions if not null in where in SQL Server

我需要从 table 中获取所有值,其中:

所以我创建了这个请求

DECLARE @currDate DATETIME;
SET @currDate = GETDATE();

SELECT * 
FROM table 
WHERE   
     -- here I have some other conditions
    AND @currDate >=  (CASE WHEN table.validityStart IS NOT NULL THEN table.validityStart ELSE @currDate END)
    AND @currDate <=  (CASE WHEN table.validityStop IS NOT NULL THEN table.validityStop ELSE @currDate END)

因此,如果 start 或 stop 为空,我将当前日期时间与其自身进行比较。我认为这不是创建此请求的最佳方式。

如果值为 null 但不与自身进行比较,是否有可能避免在 'where' 部分进行验证

条件可以这样写:

AND (table.validityStart IS NULL OR table.validityStart<=@currDate) 
AND (table.validityStop IS NULL OR table.validityStop >=@currDate)

SQL 服务器不支持合并吗? (即选择第一个非空值。)

AND @currDate >=  coalesce(table.validityStart, @currDate)
AND @currDate <=  coalesce(table.validityStop, @currDate)