Wie bekomme ich immer ein Ergebnis ohne if-else-Block?

...komplette Frage anzeigen

2 Antworten

Hallo,

wenn  Abfrage-Parameter leer (NULL) bleiben dürfen, wirst Du das in der Bedingung formulieren müssen.

Also:

WHERE (spalte1 = ? AND spalte2 = ? AND spalte3 = ? AND spalte4 = ?)

OR (spalte1 = ? AND spalte2 = ? AND spalte3 = ? AND spalte4 IS NULL)

OR (spalte1 = ? AND spalte2 = ? AND spalte3 IS NULL AND spalte4 IS NULL) 

[...];

Vielleicht geht es etwas eleganter, wenn Du mit MATCHES arbeitest. Das geht natürlich nur, wenn die Spalten CHAR-Datentypen sind.

Dazu musst Du die NULL-Werte durch '*' ersetzen.

Dann würde es so aussehen:

[...]

WHERE spalte1 MATCHES '?' AND spalte2 MATCHES '*' AND spalte3 MATCHES '?' AND spalte4 MATCHES '?'

Am einfachsten wäre es, wenn du die Felder in der Datenbank als NOT NULL definieren würdest oder, wenn du das nicht möchtest, beim Speichern darauf achtest, dass alle Felder gefüllt sind.

Vicky04 21.01.2017, 11:21

Danke, aber ich habe gerade gesehen, dass ich vergessen habe anzugeben, dass es auch gehen soll, wenn z.B. nur ein Feld eingegeben wird, also wenn z.B. nur spalte1 angegeben wird, soll im Statement auch nur WHERE spalte1 = ?; ausgeführt werden.

0

Was möchtest Du wissen?