首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在SQL server查询中将NULL替换为0

在SQL server查询中将NULL替换为0
EN

Stack Overflow用户
提问于 2013-05-30 23:47:01
回答 10查看 864.9K关注 0票数 212

我已经开发了一个查询,在前三列的结果中,我得到了NULL。如何将其替换为0

代码语言:javascript
复制
  Select c.rundate, 
    sum(case when c.runstatus = 'Succeeded' then 1 end) as Succeeded, 
    sum(case when c.runstatus = 'Failed' then 1 end) as Failed, 
    sum(case when c.runstatus = 'Cancelled' then 1 end) as Cancelled, 
    count(*) as Totalrun from
    (    Select a.name,case when b.run_status=0 Then 'Failed' when b.run_status=1 Then 'Succeeded'
    when b.run_status=2 Then 'Retry' Else 'Cancelled' End as Runstatus,
    ---cast(run_date as datetime)
                cast(substring(convert(varchar(8),run_date),1,4)+'/'+substring(convert(varchar(8),run_date),5,2)+'/'          +substring(convert(varchar(8),run_date),7,2) as Datetime) as RunDate
    from msdb.dbo.sysjobs as a(nolock) inner join msdb.dbo.sysjobhistory as b(nolock) 
    on a.job_id=b.job_id
    where a.name='AI'
    and b.step_id=0) as c
    group by 
    c.rundate
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-05-30 23:49:22

当您想用其他东西替换可能的null列时,可以使用IsNull

代码语言:javascript
复制
SELECT ISNULL(myColumn, 0 ) FROM myTable

这将把一个0放在myColumn中,如果它一开始就是空的。

票数 441
EN

Stack Overflow用户

发布于 2013-05-30 23:49:03

使用coalesce

代码语言:javascript
复制
coalesce(column_name,0)

不过,在对when condition then 1求和时,您可以同样轻松地将sum更改为count -例如:

代码语言:javascript
复制
count(case when c.runstatus = 'Succeeded' then 1 end) as Succeeded,

(Count(null)返回0,而sum(null)返回null。)

票数 25
EN

Stack Overflow用户

发布于 2019-10-29 22:27:45

如果您使用的是Presto、AWS Athena等,则没有ISNULL()函数。取而代之的是:

代码语言:javascript
复制
SELECT COALESCE(myColumn, 0 ) FROM myTable
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16840522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档