首頁 > 資料庫 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板