Heim > Datenbank > MySQL-Tutorial > Wie ersetze ich NULL-Werte durch frühere Nicht-NULL-Werte in SQL?

Wie ersetze ich NULL-Werte durch frühere Nicht-NULL-Werte in SQL?

Susan Sarandon
Freigeben: 2025-01-03 02:45:38
Original
633 Leute haben es durchsucht

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

Abrufen fehlender Werte in SQL: Ersetzen von NULL-Werten durch zuvor bekannte Werte

Datentabellen enthalten häufig fehlende Werte, die durch NULL-Werte dargestellt werden. Um die Analyse zu optimieren und die Datenintegrität aufrechtzuerhalten, ist es von entscheidender Bedeutung, NULL-Werte durch aussagekräftige Werte zu ersetzen. Eine gängige Strategie besteht darin, jeden NULL-Wert durch den letzten bekannten Nicht-NULL-Wert in einer vorhergehenden Zeile zu ersetzen.

Um dies in SQL Server zu erreichen, ziehen Sie die folgende Lösung in Betracht:

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
Nach dem Login kopieren

Diese Abfrage funktioniert wie folgt:

  • Die innere Abfrage ruft den letzten Nicht-NULL-Wert für jede Zeile ab, indem sie eine Unterabfrage mit einem ORDER BY verwendet Klausel.
  • Die äußere Abfrage verknüpft die Tabelle mit sich selbst unter Verwendung der ID-Spalte.
  • Die ISNULL-Funktion wird verwendet, um nach NULL-Werten zu suchen. Wenn die Val-Spalte der aktuellen Zeile NULL ist, wird sie durch den von der Unterabfrage abgerufenen Wert ersetzt.

Das obige ist der detaillierte Inhalt vonWie ersetze ich NULL-Werte durch frühere Nicht-NULL-Werte in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage