【问题标题】:Conditional filter in WHERE clauseWHERE 子句中的条件过滤器
【发布时间】:2013-04-24 23:47:38
【问题描述】:

如何在 SQL WHERE 子句中设置条件过滤器?例如,我有一个参数@ID,其过程如下

SELECT * FROM myTable WHERE Column1 = 'test' AND Column2 = @ID

但是,如果@ID = -1,我不希望包含 SQL 的最后一部分(AND Column2 = @ID)

我意识到我可以用 2 个单独的查询创建一个 if 语句,但是这是一个很大的脚本,并且多次遇到同样的问题,所以我希望有比几乎重复多个查询更好的方法

【问题讨论】:

    标签: sql


    【解决方案1】:

    这对于 T-SQL 来说没问题:

    SELECT * FROM myTable WHERE Column1 = 'test' AND (@ID = -1 OR Column2 = @ID)
    

    【讨论】:

      【解决方案2】:

      只需将条件作为 OR 包含在 SQL 中,注意括号

      SELECT * FROM myTable WHERE Column1 = 'test' AND (@ID = -1 OR Column2 = @ID)
      

      【讨论】:

        【解决方案3】:

        另一种选择:

        SELECT * FROM myTable WHERE Column1 = 'test' AND @ID in (-1,Column2)
        

        【讨论】:

          猜你喜欢
          • 2023-03-27
          • 2012-12-06
          • 1970-01-01
          • 2019-03-11
          • 2016-07-02
          • 2010-12-30
          • 2019-06-09
          • 1970-01-01
          • 2019-02-15
          相关资源
          最近更新 更多