44 Stimmen

MySQL: Auf NULL prüfen

Frage von Compi | Letztes Update am 13.05.2021 | Erstellt am 08.07.2015

Ich möchte gern mit der Hilfe von MySQL überprüfen, ob ein Feld beziehungsweise der Inhalt eines Feldes in einer Spalte NULL ist.

Dazu habe ich bisher folgende Anfrage konstruiert:

SELECT id, IFNULL(col, 0, col) FROM tab

Die Anfrage soll entweder den Wert der Spalte "col" auslesen, falls "col" nicht NULL ist oder 0, falls doch.

Leider funktioniert es so nicht. Ich bekomme immer die folgende Fehlermeldung:

#1582 - Incorrect parameter count in the call to native function 'IFNULL'

Kann mir jemand sagen, wie ich die Datenbankabfrage richtig formulieren kann? Das normale IF hat doch auch drei Parameter, was mache ich hier falsch?

AntwortenPositivNegativ
2Beste Antwort2 Stimmen

Du hast zwei Möglichkeiten, deine Abfrage zu ändern.

Entweder schreibst du

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

oder du änderst die Abfrage in:

SELECT id, IFNULL(col, 0) FROM tab

Die erste Abfrage benutzt das normale IF von MySQL. Als ersten Parameter übergibst du "col IS NULL", womit du überprüft, ob die Spalte "col" NULL ist. Als zweiten und dritten Parameter übergibst du entsprechend was je nach Bedingung ausgegeben werden soll. Also 0 falls die Bedingung zutrifft (col ist NULL) oder den Inhalt von col falls die Bedingung nicht zutrifft (col ist ungleich NULL).

Das zweite Beispiel zeigt, wie man IFNULL richtig verwenden kann. IFNULL erwartet zwei Parameter: Zunächst den zu überprüfenden Wert (in deinem Fall der Inhalt von "col") und als zweiten Parameter den Wert, der ausgegeben werden soll, falls der erste Parameter NULL ist. Ansonsten wird der erste Parameter ausgegeben.

Die erste Variante hat natürlich immer dann einen Vorteil, wenn du nicht direkt den Inhalt aus der betreffenden Spalte auslesen möchtest sondern zum Beispiel einen alternativen Inhalt ausgeben möchtest oder den Inhalt noch manipulieren willst.
Letztes Update am 13.05.2021 | Erstellt am 08.07.2015

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

MySQL: SELECT 0 statt NULL

Frage | 4 Antworten

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.