Heim >Datenbank >MySQL-Tutorial >Wie fülle ich NULL-Werte in SQL mit dem aktuellsten Nicht-NULL-Wert?
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!