Heim >Datenbank >MySQL-Tutorial >Wie fülle ich NULL-Werte in SQL mit dem aktuellsten Nicht-NULL-Wert?

Wie fülle ich NULL-Werte in SQL mit dem aktuellsten Nicht-NULL-Wert?

DDD
DDDOriginal
2025-01-05 16:52:39256Durchsuche

How to Fill NULL Values in SQL Using the Most Recent Non-NULL Value?

So ersetzen Sie NULL-Werte in einer Zeile durch einen zuvor bekannten Wert in SQL

Bei der Datenbankverwaltung können Situationen auftreten, in denen NULL-Werte erforderlich sind durch aussagekräftige Daten ersetzt werden. Ein häufiges Szenario ist, wenn Daten in einer Spalte fehlen und aus benachbarten Zeilen abgeleitet werden müssen.

Stellen Sie sich eine Tabelle mit zwei Spalten vor, „Datum“ und „Nummer“:

date   number
----   ------
1      3
2      NULL
3      5
4      NULL
5      NULL
6      2

Das Ziel besteht darin, die NULL-Werte in der Spalte „Nummer“ durch den aktuellsten Nicht-NULL-Wert aus der Spalte „Datum“ zu ersetzen. Dies bedeutet, dass die „Zahl“ für Datum 2, wenn sie NULL ist, durch 3 (den vorherigen bekannten Wert) ersetzt werden sollte. Ebenso sollten die NULL-Werte in Datum 4 und 5 durch 5 ersetzt werden.

In SQL Server kann die folgende Abfrage verwendet werden, um dies zu erreichen:

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

Die Abfrage verwendet eine Unterabfrage um den ersten Nicht-NULL-Wert in der Spalte „Val“ für jede Zeile mit einem NULL-Wert zu finden. Anschließend wird die ISNULL-Funktion verwendet, um den NULL-Wert durch den ausgewählten Nicht-NULL-Wert zu ersetzen.

Das Ergebnis der Abfrage ist wie folgt:

date   number
----   ------
1      3
2      3
3      5
4      5
5      5
6      2

Die NULL-Werte in der Zahl ' wurden erfolgreich durch den neuesten Nicht-NULL-Wert aus der Spalte 'Datum' ersetzt. Diese Technik kann nützlich sein, um fehlende Daten zu ergänzen und die Datenintegrität in verschiedenen Datenbankszenarien sicherzustellen.

Das obige ist der detaillierte Inhalt vonWie fülle ich NULL-Werte in SQL mit dem aktuellsten Nicht-NULL-Wert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn