0 0 Stimmen

MySQL: Auf NULL prüfen

Frage von Compi | 08.07.2015 um 10:04 Uhr

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

Stefan Trost

Profil anzeigen | Nachricht
Avatar
0Beste Antwort
0 Stimmen

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

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 und col NULL ist oder den Inhalt von col falls die Bedingung nicht zutrifft und col ungleich NULL ist.

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.
08.07.2015 um 10:46 Uhr

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

MySQL: SELECT 0 statt NULL
Frage | 4 Antworten

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.