ホームページ >データベース >mysql チュートリアル >SQL で NULL を以前の非 NULL 値に置き換える方法は?

SQL で NULL を以前の非 NULL 値に置き換える方法は?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-03 02:45:38635ブラウズ

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

SQL での欠損値の取得: NULL を以前の既知の値で置き換える

データ テーブルには、NULL で表される欠損値が含まれることがよくあります。分析を最適化し、データの整合性を維持するには、NULL を意味のある値に置き換えることが重要になります。一般的な戦略の 1 つは、各 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 列を使用してテーブルをそれ自体と結合します。
  • NULL をチェックするために ISNULL 関数が使用されます。現在の行の Val 列が NULL の場合、サブクエリによって取得された値に置き換えられます。

以上がSQL で NULL を以前の非 NULL 値に置き換える方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。