आपकी एकमात्र समस्या यह है कि आप 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 != '';