【问题标题】:Alter WHERE clause based on parameter根据参数更改 WHERE 子句
【发布时间】:2020-12-01 22:47:28
【问题描述】:

我要做的是基于参数值,更改 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 来执行超出简单值检索的操作。那我该怎么办呢?

【问题讨论】:

    标签: sql sql-server case where-clause sql-null


    【解决方案1】:

    我会推荐布尔逻辑:

    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)
    

    【讨论】:

    • 呃。当然。当我错过如此简单的事情时,我讨厌它。谢谢!大声笑
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 2015-02-27
    • 1970-01-01
    • 2017-03-30
    • 2020-08-03
    • 2020-04-28
    • 2014-06-02
    相关资源
    最近更新 更多