首页 >数据库 >mysql教程 >如何用最后一个已知的非 NULL 值替换 SQL 中的 NULL 值?

如何用最后一个已知的非 NULL 值替换 SQL 中的 NULL 值?

Susan Sarandon
Susan Sarandon原创
2025-01-03 16:32:40801浏览

How to Replace NULL Values in SQL with the Last Known Non-NULL Value?

管理 SQL 中的空值:用以前已知的值替换空值

使用 SQL 数据库的一个常见挑战是遇到空值,它可以代表丢失或未知的数据。为了确保数据完整性和分析准确性,必须适当处理空值。

问题陈述:

考虑一个包含两列的表:日期和数字,其中一些行在数字列中具有空值。目标是用取自上一个日期行中最后一个已知非空值的值替换这些空值。

解决方案:

对于 SQL Server 用户,以下查询可以是利用:

DECLARE @Table TABLE(
        ID INT,
        Val INT
)

INSERT INTO @Table (ID,Val) SELECT 1, 3
INSERT INTO @Table (ID,Val) SELECT 2, NULL
INSERT INTO @Table (ID,Val) SELECT 3, 5
INSERT INTO @Table (ID,Val) SELECT 4, NULL
INSERT INTO @Table (ID,Val) SELECT 5, NULL
INSERT INTO @Table (ID,Val) SELECT 6, 2


SELECT  *,
        ISNULL(Val, (SELECT TOP 1 Val FROM @Table WHERE ID < t.ID AND Val IS NOT NULL ORDER BY ID DESC))
FROM    @Table t

说明:

  • 创建一个临时表@Table来存储样本数据。
  • 使用ISNULL( ) 函数检查 Val 是否为空。如果是,则执行 TOP 1 子查询来检索该日期的最后一个已知非空值。
  • 子查询会过滤表中 ID 小于当前行和非空 Val 值的行,然后按 ID 降序排列以获得最新的值。
  • 最终结果包括具有原始或替换数值的所有行。

以上是如何用最后一个已知的非 NULL 值替换 SQL 中的 NULL 值?的详细内容。更多信息请关注PHP中文网其他相关文章!

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