根据参数更改 WHERE 子句
Alter WHERE clause based on parameter
我想做的是基于一个参数值,改变 WHERE 子句。我试过使用 CASE 表达式,但我意识到我正试图将它用于非预期用途。这是我的尝试:
WHERE CASE WHEN @active = 1 THEN vp.date_installed IS NOT NULL AND vp.date_removed IS NULL
WHEN @active = 0 THEN vp.date_removed IS NOT NULL
END
当然,这里的问题是尝试使用 THEN 来执行超出简单值检索的操作。那我该怎么做呢?
我会推荐布尔逻辑:
WHERE
(@active = 1 AND vp.date_installed IS NOT NULL AND vp.date_removed IS NULL)
OR (@active = 0 AND vp.date_removed IS NOT NULL)
我想做的是基于一个参数值,改变 WHERE 子句。我试过使用 CASE 表达式,但我意识到我正试图将它用于非预期用途。这是我的尝试:
WHERE CASE WHEN @active = 1 THEN vp.date_installed IS NOT NULL AND vp.date_removed IS NULL
WHEN @active = 0 THEN vp.date_removed IS NOT NULL
END
当然,这里的问题是尝试使用 THEN 来执行超出简单值检索的操作。那我该怎么做呢?
我会推荐布尔逻辑:
WHERE
(@active = 1 AND vp.date_installed IS NOT NULL AND vp.date_removed IS NULL)
OR (@active = 0 AND vp.date_removed IS NOT NULL)