首页 > 数据库 > mysql教程 > 如何在 SQL 中用以前的非 NULL 值替换 NULL?

如何在 SQL 中用以前的非 NULL 值替换 NULL?

Susan Sarandon
发布: 2025-01-03 02:45:38
原创
662 人浏览过

How to Replace NULLs with Previous Non-NULL Values in SQL?

检索 SQL 中的缺失值:用先前已知的值替换 NULL

数据表通常包含由 NULL 表示的缺失值。为了优化分析并保持数据完整性,用有意义的值替换 NULL 变得至关重要。一种常见的策略是将每个 NULL 替换为前一行中最后一个已知的非 NULL 值。

要在 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
登录后复制

此查询工作原理如下:

  • 内部查询通过使用带有 ORDER BY 的子查询检索每行的最后一个非 NULL 值
  • 外部查询使用 ID 列将表与其本身连接起来。
  • ISNULL 函数用于检查 NULL。如果当前行的 Val 列为 NULL,则将其替换为子查询检索到的值。

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

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