Wie man NULL-Werte in SQL durch 0 oder bestimmte Zahlen ersetzt

Das korrekte Behandeln von NULL-Werten bei Datenbankoperationen ist entscheidend für die Wahrung der Datenintegrität und die Sicherstellung genauer Abfrageergebnisse. NULL-Werte zeigen das Fehlen von Daten an und können Berechnungen und Aggregationen beeinflussen. In diesem Artikel erklären wir ausführlich, wie man NULL-Werte in SQL durch 0 oder bestimmte Zahlen ersetzt, anhand konkreter Beispiele.

Inhaltsverzeichnis

Grundlagen der NULL-Werte

NULL-Werte in einer Datenbank bedeuten das Fehlen spezifischer Daten. Dies bedeutet „kein Wert“ und unterscheidet sich von einer numerischen 0 oder einem leeren String. NULL-Werte werden häufig in den folgenden Szenarien verwendet:

  • Wenn ein Wert noch nicht eingegeben wurde
  • Wenn ein entsprechender Wert nicht existiert
  • Wenn ein Wert unbekannt ist

In SQL erfordern Vergleiche oder Berechnungen mit NULL-Werten eine spezielle Behandlung. Beispielsweise funktioniert ein einfacher Gleichheitsvergleich mit einem Gleichheitszeichen (=) in einer Spalte mit NULL-Werten nicht wie erwartet. Da NULL-Werte als unbekannt gelten, sind sie nichts gleich. Um daher nach NULL-Werten zu suchen, verwenden Sie IS NULL oder IS NOT NULL.

Seien Sie außerdem vorsichtig, wenn Sie mit Spalten mit NULL-Werten arbeiten. Beispielsweise werden bei der Aggregation einer Spalte mit NULL-Werten diese NULL-Werte oft ignoriert, was zu unbeabsichtigten Ergebnissen führen kann. Um dies zu vermeiden, ist es effektiv, NULL-Werte durch 0 oder bestimmte Zahlen zu ersetzen. Der nächste Abschnitt erklärt, wie dies im Detail gemacht wird.

Wie man NULL-Werte durch 0 ersetzt

Um NULL-Werte in SQL durch 0 zu ersetzen, verwendet man üblicherweise die COALESCE-Funktion oder die IFNULL-Funktion. Diese Funktionen geben den angegebenen Wert zurück, wenn ein NULL-Wert vorhanden ist. Im Folgenden wird erklärt, wie man diese Funktionen mit konkreten Beispielen verwendet.

Verwendung der COALESCE-Funktion

Die COALESCE-Funktion nimmt mehrere Argumente und gibt das erste Nicht-NULL-Argument zurück. So verwenden Sie die COALESCE-Funktion, um NULL-Werte durch 0 zu ersetzen.

SELECT COALESCE(column_name, 0) AS new_column_name
FROM table_name;

Beispiel

Zum Beispiel, wenn die Spalte revenue in der Tabelle sales NULL-Werte enthält, lautet die Abfrage, um diese NULL-Werte durch 0 zu ersetzen, wie folgt:

SELECT COALESCE(revenue, 0) AS revenue
FROM sales;

Verwendung der IFNULL-Funktion

Die IFNULL-Funktion ist eine MySQL-spezifische Funktion, die einen angegebenen Wert zurückgibt, wenn ein NULL-Wert vorhanden ist. Sie erfüllt denselben Zweck wie die COALESCE-Funktion, nimmt jedoch nur zwei Argumente.

SELECT IFNULL(column_name, 0) AS new_column_name
FROM table_name;

Beispiel

Wenn zum Beispiel die Spalte revenue in der Tabelle sales NULL-Werte enthält, lautet die Abfrage, um diese NULL-Werte mit der IFNULL-Funktion durch 0 zu ersetzen, wie folgt:

SELECT IFNULL(revenue, 0) AS revenue
FROM sales;

Mit diesen Funktionen können Sie NULL-Werte durch 0 ersetzen und Berechnungen und Aggregationen reibungslos durchführen. Der nächste Abschnitt erklärt, wie man NULL-Werte durch bestimmte Zahlen ersetzt.

Wie man NULL-Werte durch bestimmte Zahlen ersetzt

Um NULL-Werte durch eine andere Zahl als 0 zu ersetzen, können Sie ebenfalls die COALESCE-Funktion oder die IFNULL-Funktion verwenden. Dies ermöglicht es Ihnen, eine bestimmte Zahl anzugeben, um NULL-Werte angemessen zu behandeln.

Verwendung der COALESCE-Funktion

Die COALESCE-Funktion gibt den ersten Nicht-NULL-Wert aus mehreren Argumenten zurück. Um NULL-Werte durch eine bestimmte Zahl zu ersetzen, geben Sie diese Zahl als zweites Argument an.

SELECT COALESCE(column_name, specific_value) AS new_column_name
FROM table_name;

Beispiel

Wenn zum Beispiel die Spalte bonus in der Tabelle employee NULL-Werte enthält, lautet die Abfrage, um diese NULL-Werte durch 500 zu ersetzen, wie folgt:

SELECT COALESCE(bonus, 500) AS bonus
FROM employee;

Verwendung der IFNULL-Funktion

Die IFNULL-Funktion ist eine MySQL-spezifische Funktion, die NULL-Werte durch eine angegebene Zahl ersetzt und zwei Argumente annimmt. Geben Sie die bestimmte Zahl als zweites Argument an.

SELECT IFNULL(column_name, specific_value) AS new_column_name
FROM table_name;

Beispiel

Wenn zum Beispiel die Spalte bonus in der Tabelle employee NULL-Werte enthält, lautet die Abfrage, um diese NULL-Werte mit der IFNULL-Funktion durch 500 zu ersetzen, wie folgt:

SELECT IFNULL(bonus, 500) AS bonus
FROM employee;

Dies ermöglicht es Ihnen, NULL-Werte durch bestimmte Zahlen zu ersetzen, die Datenkonsistenz zu wahren und notwendige Berechnungen und Analysen durchzuführen. Der nächste Abschnitt erklärt komplexere Ersetzungsmethoden unter Verwendung der CASE-Anweisung.

Komplexe Ersetzungsmethoden mit der CASE-Anweisung

Durch die Verwendung der CASE-Anweisung können Sie NULL-Werte anhand von Bedingungen durch bestimmte Werte ersetzen. Die CASE-Anweisung ermöglicht eine flexiblere und komplexere Ersetzungsverarbeitung.

Grundstruktur der CASE-Anweisung

Die Grundstruktur der CASE-Anweisung ist wie folgt:

SELECT 
    CASE 
        WHEN condition THEN value
        ELSE alternative_value
    END AS new_column_name
FROM table_name;

Beispiel

Wenn zum Beispiel die Spalte discount in der Tabelle sales NULL-Werte enthält, können Sie diese basierend auf den folgenden Bedingungen ersetzen:

  1. Ersetzen Sie discount durch 100, wenn es NULL ist und total_sales 1000 oder mehr beträgt
  2. Ersetzen Sie discount durch 50, wenn es NULL ist und total_sales weniger als 1000 beträgt

Die Abfrage für diesen Fall lautet wie folgt:

SELECT 
    CASE 
        WHEN discount IS NULL AND total_sales >= 1000 THEN 100
        WHEN discount IS NULL AND total_sales < 1000 THEN 50
        ELSE discount
    END AS adjusted_discount
FROM sales;

Kombinieren von Bedingungen für die Ersetzung

Komplexere Bedingungen können ebenfalls kombiniert werden. Zum Beispiel, wenn Sie die Spalte bonus in der Tabelle employee basierend auf den folgenden Bedingungen ersetzen möchten:

  1. Ersetzen Sie bonus durch 1000, wenn es NULL ist und performance_rating 5 ist
  2. Ersetzen Sie bonus durch 500, wenn es NULL ist und performance_rating zwischen 3 und 4 liegt
  3. Ersetzen Sie bonus durch 200, wenn es NULL ist und performance_rating weniger als 3 ist

Die Abfrage für diesen Fall lautet wie folgt:

SELECT 
    CASE 
        WHEN bonus IS NULL AND performance_rating = 5 THEN 1000
        WHEN bonus IS NULL AND performance_rating BETWEEN 3 AND 4 THEN 500
        WHEN bonus IS NULL AND performance_rating < 3 THEN 200
        ELSE bonus
    END AS adjusted_bonus
FROM employee;

Wie gesehen, ist es möglich, durch die Verwendung der CASE-Anweisung NULL-Werte flexibel basierend auf verschiedenen Bedingungen zu ersetzen. Der nächste Abschnitt fasst die bisher besprochenen Inhalte zusammen.

Fazit

Wir haben erklärt, wie man NULL-Werte in SQL durch 0 oder bestimmte Zahlen ersetzt. NULL-Werte sind spezielle Indikatoren für „Abwesenheit“ in einer Datenbank, und wenn sie nicht angemessen behandelt werden, können sie Berechnungen und Aggregationsergebnisse beeinflussen. Durch die Verwendung der COALESCE-Funktion oder der IFNULL-Funktion können Sie NULL-Werte leicht durch 0 oder bestimmte Zahlen ersetzen. Darüber hinaus ist es durch die Verwendung der CASE-Anweisung möglich, NULL-Werte basierend auf komplexeren Bedingungen zu ersetzen.

Durch die Anwendung dieser Methoden können Sie die Datenkonsistenz wahren und genaue Abfrageergebnisse erhalten. Die effektive Nutzung dieser Techniken bei praktischen Datenbankoperationen kann dazu beitragen, die Datenqualität zu verbessern und die Genauigkeit Ihrer Analysen zu erhöhen.

Inhaltsverzeichnis