0 0 Stimmen

MySQL: SELECT 0 statt NULL

Frage von Gast | 30.03.2014 um 11:05 Uhr

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

Stefan Trost

Profil anzeigen | Nachricht
Avatar
2Beste Antwort
4 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.
30.03.2014 um 14:36 Uhr

AntwortenPositiv Negativ

Computer Experte

Profil anzeigen | Nachricht
Avatar
00 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 Uhr

AntwortenPositiv Negativ

Anja Proggy

Profil anzeigen | Nachricht
Avatar
-22 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.
31.03.2014 um 18:41 Uhr

AntwortenPositiv Negativ

Stefan Trost

Profil anzeigen | Nachricht
Avatar
02 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 Uhr

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

MySQL: Auf NULL prüfen
Frage | 1 Antwort
MySQL als Taschenrechner
Tipp | 0 Kommentare

Wichtiger Hinweis

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.