Heim >Datenbank >MySQL-Tutorial >Wie ersetze ich NULL-Werte in SQL durch den letzten bekannten Nicht-NULL-Wert?

Wie ersetze ich NULL-Werte in SQL durch den letzten bekannten Nicht-NULL-Wert?

Susan Sarandon
Susan SarandonOriginal
2025-01-03 16:32:40770Durchsuche

How to Replace NULL Values in SQL with the Last Known Non-NULL Value?

Nullwerte in SQL verwalten: Nullwerte durch zuvor bekannte Werte ersetzen

Eine häufige Herausforderung bei der Arbeit mit SQL-Datenbanken besteht darin, auf Nullwerte zu stoßen. Dies kann fehlende oder unbekannte Daten darstellen. Um die Datenintegrität und Analysegenauigkeit sicherzustellen, ist es wichtig, Nullwerte angemessen zu behandeln.

Problemstellung:

Stellen Sie sich eine Tabelle mit zwei Spalten vor: Datum und Nummer, wobei einige Zeilen haben Nullwerte in der Zahlenspalte. Das Ziel besteht darin, diese Nullwerte durch Werte zu ersetzen, die aus dem letzten bekannten Nicht-Null-Wert in der vorherigen Datumszeile stammen.

Lösung:

Für SQL Server-Benutzer: Die folgende Abfrage kann sein verwendet:

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

Erklärung:

  • Erstellen Sie eine temporäre Tabelle @Table, um die Beispieldaten zu speichern.
  • Verwenden Sie ISNULL( )-Funktion, um zu überprüfen, ob Val null ist. Wenn dies der Fall ist, wird die Unterabfrage TOP 1 ausgeführt, um den letzten bekannten Wert ungleich Null für dieses Datum abzurufen.
  • Die Unterabfrage filtert die Tabelle nach Zeilen mit einer ID, die kleiner als die aktuelle Zeile ist, und nach Val-Werten ungleich Null und ordnet sie dann in absteigender Reihenfolge nach ID, um den neuesten Wert zu erhalten.
  • Das Endergebnis umfasst alle Zeilen mit den ursprünglichen oder ersetzten Zahlenwerten.

Das obige ist der detaillierte Inhalt vonWie ersetze ich NULL-Werte in SQL durch den letzten bekannten 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