【问题标题】:SQL Server Inline CASE WHEN ISNULL and multiple checksSQL Server Inline CASE WHEN ISNULL 和多个检查
【发布时间】:2011-08-22 00:44:57
【问题描述】:

我有一列有一些空值。如果该列为空,我想根据另一列中的值对其输出进行条件化。

所以if case when null (if c=80 then 'planb'; else if c=90 then 'planc')

如何在内联 T-SQL 语句中编写代码?

谢谢。

【问题讨论】:

    标签: sql sql-server if-statement case


    【解决方案1】:

    您还可以使用嵌套的 case 语句。假设第一列称为DataColumn。

    CASE 
      WHEN DataColumn IS NULL THEN 
        CASE c 
          WHEN 80 THEN 'planb' 
          WHEN 90 THEN 'planc' 
          ELSE 'no plan' 
        END 
      ELSE DataColumn 
    END
    

    【讨论】:

      【解决方案2】:
      COALESCE(YourColumn, CASE c WHEN 80 then 'planb' WHEN 90 THEN 'planc' END)
      

      【讨论】:

      • 如果要强制将返回值转换为第一个表达式的数据类型,也可以使用 ISNULL 函数代替 COALESCE 函数。
      • @Jake - 谢谢,我以前从未注意到这是两者之间的区别!
      • 使用 ISNULL 和 COALESCE 时要小心,它们是不一样的。 ISNULL 将用替换值替换字符,而 COALESCE 将替换。我可以提供一个结果会不同的例子。
      • @Leons - COALESCE(foo, bar) 基本上是 CASE WHEN foo IS NOT NULL THEN foo ELSE bar END 的简写,不确定你在替换和替换之间有什么区别你能举这个例子吗?
      • @Leons - 嗯,根据 Jake 的评论,它被转换为 varchar(2)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 2017-05-30
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多