22 Stimmen

MySQL: SELECT 0 statt NULL

Frage von Gast | Letztes Update am 12.05.2021 | Erstellt am 30.03.2014

Bei einer meiner MySQL-Anfragen kann es hin und wieder vorkommen, dass der eine oder andere NULL-Wert dabei ist, weil die entsprechende Zelle noch nicht in der Datenbank vorhanden ist.

Um die Werte dennoch in meinem PHP-Skript weiter verarbeiten zu können, würde ich gerne statt der "NULL" direkt eine "0" von MySQL zurückbekommen.

Gibt es irgend eine Möglichkeit in MySQL direkt in der Abfrage festzulegen, dass "0" zurückgegeben werden soll, wenn das Ergebnis "NULL" ist?

AntwortenPositivNegativDatumStimmen
5Beste Antwort7 Stimmen

Du kannst einfach die Funktion COALESCE() verwenden.

Ein Beispiel dafür wäre:

SELECT id, COALESCE(col, 0) FROM tab

Hier möchten wir die Spalten "id" und "col" aus der Tabelle "tab" auslesen. Für den Fall dass der Wert von "col" "NULL" ist, geben wir statt "NULL" den Wert 0 aus.

COALESCE() gibt uns den ersten Wert in der Reihe der Übergebenenparameter an, der nicht NULL ist. Demnach würde man mit COALESCE(col, 1) den Wert 1 bekommen, wenn "col" NULL ist.

Es lassen sich aber auch mehrere Parameter übergeben. Zum Beispiel COALESCE(col1, col2, 0). Hier wäre das Ergebnis der Wert aus "col1" falls dieser nicht NULL ist. Falls er NULL ist, würde der Wert aus "col2" zurückgegeben werden und wenn sowohl "col1" als auch "col2" NULL sind, würde auf "0" zurückgegriffen werden.
Letztes Update am 12.05.2021 | Erstellt am 30.03.2014

AntwortenPositiv Negativ
33 Stimmen

Statt COALESCE() kannst du auch die Funktion IFNULL() verwenden.

Die Anwendung ist ähnlich, wie die von COALESCE():

SELECT id, IFNULL(col, 0) FROM tab

Also: Wenn der erste übergebene Wert (hier der Wert aus "col"), NULL ist, nehme den zweiten Wert (hier 0).

Allerdings kann IFNULL() nur 2 Parameter entgegennehmen und ist daher nicht so flexibel einsetzbar wie COALESCE().
30.03.2014 um 21:25

AntwortenPositiv Negativ
04 Stimmen

Noch ein kleiner Tipp am Rande: In MySQL kann jede Spalte einen DEFAULT-Wert annehmen.

Vielleicht kann mir das auch schon weiterhelfen. Wenn du nämlich den DEFAULT-Wert deiner Spalte auf "0" setzt, steht dieser Wert automatisch in der Zelle, sobald eine neue Zeile in der Datenbank angelegt wird.

Klar, dieser Tipp funktioniert nicht, wenn du versuchst Werte aus Zeilen auszulesen, die gar nicht vorhanden sind.
Letztes Update am 12.05.2021 | Erstellt am 31.03.2014

AntwortenPositiv Negativ
13 Stimmen

Eine andere Möglichkeit ist, die IF Bedingung von MySQL zu nutzen:

SELECT id, IF(col IS NULL, 0, col) FROM tab

In dieser IF-Abfrage überprüfen wir durch "col IS NULL" ob "col" NULL ist. Falls ja, geben wir die Alternative zurück (hier 0); falls nein, geben wir den Inhalt von "col" zurück.
02.04.2014 um 08:05

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

MySQL als Taschenrechner

Tipp | 0 Kommentare

HTML-Formular mit Daten vorbelegen

Tutorial | 0 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.