Vấn đề duy nhất của bạn là bạn sử dụng OR thay vì AND.
Hãy xem xét trường hợp giá trị là NULL:
-
CON.EMAILADDRESS IS NOT NULL
=> SAI -
CON.EMAILADDRESS != ' '
=> KHÔNG ĐỦ
FALSE OR NULL => NULL. Vì tiêu chí không dẫn đến TRUE nên bạn không chọn NULL.
Và nếu giá trị là một chuỗi rỗng '', '' hoặc bất kỳ độ dài nào:
-
CON.EMAILADDRESS IS NOT NULL
=> ĐÚNG -
CON.EMAILADDRESS != ' '
=> SAI
TRUE HOẶC FALSE => ĐÚNG. Bạn chọn chuỗi trống.
Tôi cho rằng đây là điều khiến bạn bối rối:mặc dù đã sử dụng nhầm HOẶC thay vì VÀ bạn vẫn loại bỏ một số chuỗi trống, nhưng không phải tất cả.
Vì vậy:
WHERE CON.EMAILADDRESS IS NOT NULL AND CON.EMAILADDRESS != ' ';
Hoặc, dưới dạng bất kỳ chuỗi nào != ''
không thể là NULL (NULL != ''
=> KHÔNG ĐỦ, không ĐÚNG), đơn giản là:
WHERE CON.EMAILADDRESS != '';