【发布时间】:2016-11-06 05:58:26
【问题描述】:
我使用的是 SQL Server 2014,我有一个使用这行代码的查询:
ISNULL(b.[LEISURE],0) AS 'LEISURE'
Leisure 的值也可以是负数,在这种情况下,我希望该值也显示为 0。
如何在我的代码中包装这两个条件?
【问题讨论】:
标签: sql-server tsql null zero negative-number
我使用的是 SQL Server 2014,我有一个使用这行代码的查询:
ISNULL(b.[LEISURE],0) AS 'LEISURE'
Leisure 的值也可以是负数,在这种情况下,我希望该值也显示为 0。
如何在我的代码中包装这两个条件?
【问题讨论】:
标签: sql-server tsql null zero negative-number
使用 CASE 表达式..
Case when b.lesure<0 or b.lesure is null then 0 else b.lesure End
【讨论】:
您可以改用CASE:
SELECT CASE WHEN b.LEISURE IS NULL OR b.LEISURE <= 0
THEN 0
ELSE b.[LEISURE] END AS 'LEISURE'
FROM dbo.TableName
【讨论】:
代替您给定的代码块,使用:
IIF(b.[LEISURE] IS NULL OR b.[LEISURE]<0, 0, b.[LEISURE])
或
IIF(b.[LEISURE]>=0, b.[LEISURE], 0)
【讨论】:
你可以使用IIF:
SELECT IIF(LEISURE < 0, 0, COALESCE(LEISURE, 0))
如果LEISURE 为负数,则上述IIF 将计算为0,否则,如果LEISURE 为NULL,COALESCE 将再次返回0,否则返回正值。
【讨论】:
CASE 语句是执行此操作的最佳方式。您可以通过一个比较来做到这一点:
SELECT (CASE WHEN b.leisure > 0 THEN b.leisure ELSE 0 END)
与0 相比,NULL 比较不会评估为真,因此NULL 的显式比较并不是绝对必要的。
【讨论】: