Vinzenz Mai: Logik ganz einfach: nur UND, kein ODER

Beitrag lesen

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