CodeGym /Kurse /SQL SELF /Überprüfung von NULL-Werten: IS NULL und IS NOT NULL

Überprüfung von NULL-Werten: IS NULL und IS NOT NULL

SQL SELF
Level 9 , Lektion 1
Verfügbar

Heute machen wir weiter mit NULL – dem unsichtbaren Helden der Datenbanken. Falls du immer noch denkst, dass NULL einfach nur "nichts" ist, hast du zwar recht, aber eben nicht ganz. In dieser Vorlesung lernst du, wie du prüfst, ob in deinen Daten NULL vorkommt und was du damit anfangen kannst. Also, bereit, fehlende Werte aufzuspüren?

Fangen wir easy an – stell dir vor, du arbeitest mit der Datenbank eines Online-Shops. Du hast eine Tabelle mit Bestellungen, bei manchen fehlt der Kommentar, bei anderen steht was drin. Wenn du jetzt alle Bestellungen mit leeren Kommentaren suchst und einfach = oder <> benutzt, wirst du überrascht sein... Warum? Weil NULL ein Spezialfall ist!

In SQL prüfst du auf das Vorhandensein oder Fehlen von NULL mit IS NULL und IS NOT NULL. Diese Operatoren helfen dir, mit NULL klarzukommen und die richtigen Daten zu bekommen.

Werte prüfen mit IS NULL

IS NULL wird genutzt, um zu checken, ob eine Spalte oder ein Ausdruck den Wert NULL hat.

SELECT *
FROM orders
WHERE comment IS NULL;

Diese Abfrage gibt dir alle Zeilen zurück, wo der Wert in der Spalte comment NULL ist. Praktisch, wenn du Bestellungen ohne Kommentar finden willst.

Hier ein Beispiel für die Tabelle orders:

id customer_name total_amount comment
1 Otto Art 1500 "Eilige Lieferung"
2 Maria Chi 3000 NULL
3 Alex Lin 2000 ''
4 Anna Song 5000 NULL

Abfrage:

SELECT id, customer_name
FROM orders
WHERE comment IS NULL;

Ergebnis:

id customer_name
2 Maria Chi
4 Anna Song

Beachte: Zeilen mit leerem String '' sind hier nicht dabei, denn '' ist nicht NULL.

Werte prüfen mit IS NOT NULL

IS NOT NULL macht das Gegenteil: Es prüft, ob ein Wert nicht NULL ist. Zum Beispiel, wenn du alle Bestellungen mit Kommentar willst:

SELECT *
FROM orders
WHERE comment IS NOT NULL;

Diese Abfrage gibt dir nur die Zeilen, wo in comment was drinsteht (auch leere Strings '' zählen dazu).

Beispiel

Die Tabelle orders bleibt gleich.

id customer_name total_amount comment
1 Otto Art 1500 "Eilige Lieferung"
2 Maria Chi 3000 NULL
3 Alex Lin 2000 ''
4 Anna Song 5000 NULL

Wir führen die Abfrage aus:

SELECT id, customer_name, comment
FROM orders
WHERE comment IS NOT NULL;

Ergebnis:

id customer_name comment
1 Otto Art "Eilige Lieferung"
3 Alex Lin ''

Schau: Die Zeile mit leerem String '' ist dabei. SQL sieht das als "nicht leer" an.

Wann benutzt man IS NULL und IS NOT NULL?

Hier ein paar typische Szenarien:

  1. Daten filtern: Du willst unvollständige Einträge rauswerfen, wo Werte fehlen.
  2. Fehlerbehandlung: Manchmal bedeutet NULL einen Eingabefehler, und du willst solche Zeilen isolieren.
  3. Datenanalyse: Die Anzahl der Einträge mit fehlenden Werten hilft dir, die Datenqualität zu checken.

Praxisbeispiele

Probieren wir ein paar praktische Aufgaben:

Aufgabe 1: Studenten ohne Geburtsdatum auswählen

Angenommen, du hast die Tabelle students:

id name birth_date
1 Otto Art 2000-05-10
2 Maria Chi NULL
3 Alex Lin 1998-12-30
4 Anna Song NULL

Abfrage:

SELECT name
FROM students
WHERE birth_date IS NULL;

Ergebnis:

name
Maria Chi
Anna Song

Mit dieser Abfrage findest du Studenten, bei denen das Geburtsdatum noch fehlt.

Aufgabe 2: Bestellungen mit Kommentaren auswählen

id customer_name total_amount comment
1 Otto Art 1500 "Eilige Lieferung"
2 Maria Chi 3000 NULL
3 Alex Lin 2000 ''
4 Anna Song 5000 NULL

Für die Tabelle orders kannst du Bestellungen mit ausgefülltem Kommentar so finden:

SELECT customer_name, comment
FROM orders
WHERE comment IS NOT NULL;

Ergebnis:

customer_name comment
Otto Art "Eilige Lieferung"
Alex Lin ''

Vergleich mit normalen Operatoren

Jetzt machen wir mal einen "falschen" Versuch, um NULL zu prüfen:

SELECT *
FROM orders
WHERE comment = NULL;

Überrascht? Die Abfrage gibt dir keine Zeile zurück, selbst wenn comment eindeutig NULL ist. Das liegt daran, dass du NULL nicht mit Standard-Operatoren vergleichen kannst. Für solche Checks musst du IS NULL verwenden.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION