【问题标题】:TSQL where caseTSQL where 案例
【发布时间】:2013-02-11 12:18:10
【问题描述】:

我需要正确的 tsql 语法来解决这个问题:

Select * from table where var_A='10'
select * from table where var_B='10'

何时使用 var_A 或 var_B 取决于 var_C 的值

所以当var_c='something' 使用var_A='10' 否则var_B='10'

【问题讨论】:

  • 考虑更改表格的布局。您的问题表明存在严重的设计缺陷。您介意展示您的表格设计或解释表格包含的内容吗?

标签: sql sql-server tsql


【解决方案1】:
select *
from [table]
where case when var_c = 'something' then var_a else var_b end = '10'

SQL Fiddle with demo.

【讨论】:

    【解决方案2】:

    Ian 可能有最好的答案,但我想我会为不同的(虽然不太灵活)方法提供另一个答案,以防万一:

    IF var_c = 'something' BEGIN
        SELECT * FROM [table] WHERE var_a = '10'
    END
    ELSE BEGIN
        SELECT * FROM [table] WHERE var_b = '10'
    END
    

    【讨论】:

      【解决方案3】:

      这就是你在 where 子句中使用 case 语句的方式。

      select * from table
      where ( case when var_c = 'something' 
              then var_a
              else 
                  var_b
              end
            )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多