आपकी एकमात्र समस्या यह है कि आप AND के बजाय OR का उपयोग करते हैं।
आइए उस मामले को देखें जहां मान NULL है:
CON.EMAILADDRESS IS NOT NULL
=> गलतCON.EMAILADDRESS != ' '
=> नल
FALSE या NULL => NULL। चूंकि मानदंड का परिणाम TRUE नहीं होता है, इसलिए आप NULL का चयन नहीं करते हैं।
और यदि मान एक खाली स्ट्रिंग '', '', या जो भी लंबाई हो:
CON.EMAILADDRESS IS NOT NULL
=> सचCON.EMAILADDRESS != ' '
=> गलत
सही या गलत => सच। आप खाली स्ट्रिंग का चयन करें।
मुझे लगता है कि यह वही है जो आपको भ्रमित करता है:गलती से OR के बजाय AND का उपयोग करने के बावजूद आपने अभी भी कुछ खाली तार हटा दिए हैं, लेकिन सभी नहीं।
तो:
WHERE CON.EMAILADDRESS IS NOT NULL AND CON.EMAILADDRESS != ' ';
या, किसी भी स्ट्रिंग के रूप में != ''
NULL नहीं हो सकता (NULL != ''
=> NULL, TRUE नहीं), बस:
WHERE CON.EMAILADDRESS != '';