Hallo,
Ich hege die Vermutung, dass Du an NULL scheiterst
Im Gegensatz zu Programmiersprachen wie Perl oder PHP wird ein NULL-Wert *nicht* zu false ausgewertet, aber auch nicht zu true.
ja das klingt gut, vinzenz. Meine Sprache :-)
Jetzt muss ich kurz zurück gehen. Angenommen Tabelle quark mit 4 Varchar-Spalten. name, frucht, zucker, menge. Ich füge einen neuen Datensatz ein:
INSERT INTO quark (name,frucht,zucker) VALUES ('lecker','kirsche','')
dann ist: name,frucht ein bestimmter wert, zucker ein leerer string und menge NULL. stimmt das, VINZENZ?
Nicht unbedingt. Wenn der Standardwert für die Spalte "menge" der Leerstring ist, dann steht der Leerstring drin. Wenn die Spalte die Eigenschaft NOT NULL trägt, wird das INSERT scheitern. Ansonsten ja: dann steht NULL drin.
SELECT from quark WHERE ((zucker<>'' OR zucker IS NULL) OR (menge<>'' OR menge IS NULL)) AND name='lecker' ...
gibts einen ausdruck der bei beiden ('' und NULL) true zurückgibt?
Zum Beispiel könnte Dir die Funktion
COALESCE() helfen:
... (COALESCE(zucker, '') <> '') OR ...
Freundliche Grüße
Vinzenz