Satu-satunya masalah Anda adalah Anda menggunakan OR alih-alih AND.
Mari kita lihat kasus di mana nilainya NULL:
CON.EMAILADDRESS IS NOT NULL=> SALAHCON.EMAILADDRESS != ' '=> NULL
SALAH ATAU NULL => NULL. Karena kriteria tidak menghasilkan TRUE, Anda tidak memilih NULL.
Dan jika nilainya adalah string kosong '', ' ', atau berapa pun panjangnya:
CON.EMAILADDRESS IS NOT NULL=> BENARCON.EMAILADDRESS != ' '=> SALAH
BENAR ATAU SALAH => BENAR. Anda memilih string kosong.
Saya kira inilah yang membingungkan Anda:meskipun salah menggunakan OR alih-alih AND Anda masih menghapus beberapa string kosong, tetapi tidak semua.
Jadi:
WHERE CON.EMAILADDRESS IS NOT NULL AND CON.EMAILADDRESS != ' ';
Atau, seperti string apa pun != '' tidak boleh NULL (NULL != '' => NULL, bukan TRUE), cukup:
WHERE CON.EMAILADDRESS != '';