【问题标题】:using IF in a SQL Server View在 SQL Server 视图中使用 IF
【发布时间】:2011-03-31 19:57:04
【问题描述】:

我在 SQL Server 中有一个视图,可以将一个架构版本转换为另一个架构版本。
目前,视图如下所示:

SELECT newValue AS oldValue  
FROM dbo.MyTable

问题是,在新模式中,newValue 是不可为空的,所以我们将它设置为 -1 表示空字段,但在旧模式中,它是可空的。

我该怎么做才能达到以下效果:

SELECT  
(  
  IF( newValue > -1 )  
    newValue as oldValue  
  ELSE  
    NULL as oldValue
)  
FROM dbo.MyTable

【问题讨论】:

    标签: sql sql-server tsql views conditional


    【解决方案1】:
    SELECT  
      case when newValue > -1 then  
        newValue  
      else  
        NULL
      end as oldValue
    FROM dbo.MyTable
    

    【讨论】:

    • 太棒了,非常感谢 :) 我会尽快标记为答案。
    • 在速度方面与 COALESCE 相比如何?
    • @adolf 我认为没有太大的区别。在 SQL 中,通常 90% 以上的速度与数据访问策略有关。在记录中计算某些东西的时间通常可以忽略不计。
    • @adolf 你想如何在这里使用coalesce()?其目的是将某些内容转换为 null,而不是 FROM null,就像 coalesce() 所做的那样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2016-08-30
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多