首页 >数据库 >mysql教程 >如何在 SQL Server 查询中用零替换 NULL 值?

如何在 SQL Server 查询中用零替换 NULL 值?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-31 14:29:10605浏览

How to Replace NULL Values with Zero in SQL Server Queries?

在 SQL Server 查询中用零替换 NULL 值

在 SQL Server 查询中,您可能会遇到以下情况:结果。为了确保准确的数据分析,有必要将这些 NULL 值替换为更有意义的表示形式(例如 0)。

要实现此目的,您可以使用 ISNULL() 函数。 ISNULL() 函数采用两个参数:要检查 NULL 值的表达式和要替换 NULL 值的值。

查询语法:

SELECT ISNULL(expression, 0) FROM table

示例:

在您提供的查询中,您有三列可能包含 NULL 值:成功、失败和取消。要将这些 NULL 值替换为 0,您可以使用 ISNULL() 函数,如下所示:

Select
  c.rundate,
  ISNULL(
    sum(case when c.runstatus = 'Succeeded' then 1 end),
    0
  ) as Succeeded,
  ISNULL(
    sum(case when c.runstatus = 'Failed' then 1 end),
    0
  ) as Failed,
  ISNULL(
    sum(case when c.runstatus = 'Cancelled' then 1 end),
    0
  ) 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(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

通过使用 ISNULL(),您可以确保成功、失败和取消的结果始终为一个数值,即使原始查询结果中有 NULL 值。

以上是如何在 SQL Server 查询中用零替换 NULL 值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn