【问题标题】:T-SQL syntax to show both negative values and NULL values as 0将负值和 NULL 值都显示为 0 的 T-SQL 语法
【发布时间】:2016-11-06 05:58:26
【问题描述】:

我使用的是 SQL Server 2014,我有一个使用这行代码的查询:

ISNULL(b.[LEISURE],0) AS 'LEISURE'

Leisure 的值也可以是负数,在这种情况下,我希望该值也显示为 0。

如何在我的代码中包装这两个条件?

【问题讨论】:

    标签: sql-server tsql null zero negative-number


    【解决方案1】:

    使用 CASE 表达式..

    Case when b.lesure<0 or b.lesure is null then 0 else b.lesure End
    

    【讨论】:

      【解决方案2】:

      您可以改用CASE

      SELECT CASE WHEN b.LEISURE IS NULL OR b.LEISURE <= 0 
             THEN 0
             ELSE b.[LEISURE] END AS 'LEISURE'
      FROM dbo.TableName
      

      【讨论】:

        【解决方案3】:

        代替您给定的代码块,使用:

        IIF(b.[LEISURE] IS NULL OR b.[LEISURE]<0, 0, b.[LEISURE])
        

        IIF(b.[LEISURE]>=0, b.[LEISURE], 0)
        

        【讨论】:

        • 喜欢您的解决方案的简单性!
        【解决方案4】:

        你可以使用IIF:

        SELECT IIF(LEISURE < 0, 0, COALESCE(LEISURE, 0))
        

        如果LEISURE 为负数,则上述IIF 将计算为0,否则,如果LEISURENULLCOALESCE 将再次返回0,否则返回正值。

        【讨论】:

          【解决方案5】:

          CASE 语句是执行此操作的最佳方式。您可以通过一个比较来做到这一点:

          SELECT (CASE WHEN b.leisure > 0 THEN b.leisure ELSE 0 END)
          

          0 相比,NULL 比较不会评估为真,因此NULL 的显式比较并不是绝对必要的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-08-16
            • 2015-07-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-11-27
            相关资源
            最近更新 更多