Единственият ви проблем е, че използвате ИЛИ вместо И.
Нека разгледаме случая, когато стойността е NULL:
CON.EMAILADDRESS IS NOT NULL
=> НЕВЕРНОCON.EMAILADDRESS != ' '
=> NULL
FALSE OR NULL => NULL. Тъй като критериите не водят до TRUE, вие не избирате NULL.
И ако стойността е празен низ '', ' ' или каквато и да е дължина:
CON.EMAILADDRESS IS NOT NULL
=> ВЯРНОCON.EMAILADDRESS != ' '
=> НЕВЕРНО
ВЯРНО ИЛИ НЕПРАВНО => ВЯРНО. Избирате празния низ.
Предполагам, че това ви е объркало:въпреки че сте използвали погрешно ИЛИ вместо И, все пак сте премахнали някои празни низове, но не всички.
И така:
WHERE CON.EMAILADDRESS IS NOT NULL AND CON.EMAILADDRESS != ' ';
Или, както всеки низ != ''
не може да бъде NULL (NULL != ''
=> NULL, а не TRUE), просто:
WHERE CON.EMAILADDRESS != '';