T-SQL 语法将负值和 NULL 值都显示为 0
T-SQL syntax to show both negative values and NULL values as 0
我正在使用 SQL Server 2014,我有一个查询代码行:
ISNULL(b.[LEISURE],0) AS 'LEISURE'
Leisure 的值也可以是负数,在这种情况下我希望该值也显示为 0。
如何在我的代码中包含这两个条件?
使用 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
再次returns0
,否则返回正值。
CASE
语句是执行此操作的最佳方法。你可以通过一个比较来完成:
SELECT (CASE WHEN b.leisure > 0 THEN b.leisure ELSE 0 END)
与 0
相比,NULL
比较的计算结果不为真,因此 NULL
的显式比较并非绝对必要。
我正在使用 SQL Server 2014,我有一个查询代码行:
ISNULL(b.[LEISURE],0) AS 'LEISURE'
Leisure 的值也可以是负数,在这种情况下我希望该值也显示为 0。
如何在我的代码中包含这两个条件?
使用 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
再次returns0
,否则返回正值。
CASE
语句是执行此操作的最佳方法。你可以通过一个比较来完成:
SELECT (CASE WHEN b.leisure > 0 THEN b.leisure ELSE 0 END)
与 0
相比,NULL
比较的计算结果不为真,因此 NULL
的显式比较并非绝对必要。