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

如何在 SQL Server 查询中将 NULL 值替换为 0?

Patricia Arquette
发布: 2025-01-01 03:08:10
原创
813 人浏览过

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

在 SQL Server 查询中将 NULL 值替换为 0

在使用 SQL 查询时,经常会在某些列中遇到 NULL 值,这会使数据处理和分析变得复杂。要在 SQL Server 查询中将 NULL 值替换为特定值(例如 0),可以使用 ISNULL 函数。

ISNULL 函数采用两个参数:可能为空的列和替换值。在您的情况下,您希望将前三列(成功、失败、取消)中的 NULL 值替换为 0。以下是实现此目的的方法:

SELECT ISNULL(column_name, 0) AS column_alias, ...
登录后复制

例如,要替换查询的前三列为 0,您可以按如下方式修改它:

SELECT ISNULL(c.rundate, 0) AS 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 值,它们也会在用于计算或显示在结果中之前被替换为 0。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板