Ihr einziges Problem ist, dass Sie ODER anstelle von UND verwenden.
Schauen wir uns den Fall an, in dem der Wert NULL ist:
CON.EMAILADDRESS IS NOT NULL
=> FALSCHCON.EMAILADDRESS != ' '
=> NULL
FALSCH ODER NULL => NULL. Da das Kriterium nicht WAHR ergibt, wählen Sie keine NULLen aus.
Und wenn der Wert ein leerer String '', '' oder eine beliebige Länge ist:
CON.EMAILADDRESS IS NOT NULL
=> WAHRCON.EMAILADDRESS != ' '
=> FALSCH
WAHR ODER FALSCH => WAHR. Sie wählen die leere Zeichenfolge aus.
Ich nehme an, das hat Sie verwirrt:Obwohl Sie fälschlicherweise OR anstelle von AND verwendet haben, haben Sie immer noch einige leere Zeichenfolgen entfernt, aber nicht alle.
Also:
WHERE CON.EMAILADDRESS IS NOT NULL AND CON.EMAILADDRESS != ' ';
Oder als beliebige Zeichenfolge != ''
darf nicht NULL sein (NULL != ''
=> NULL, nicht TRUE), einfach:
WHERE CON.EMAILADDRESS != '';