首頁 >資料庫 >mysql教程 >如何用最後一個已知的非 NULL 值取代 SQL 中的 NULL 值?

如何用最後一個已知的非 NULL 值取代 SQL 中的 NULL 值?

Susan Sarandon
Susan Sarandon原創
2025-01-03 16:32:40762瀏覽

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