Dit eneste problem er, at du bruger OR i stedet for OG.
Lad os se på det tilfælde, hvor værdien er NULL:
CON.EMAILADDRESS IS NOT NULL
=> FALSKCON.EMAILADDRESS != ' '
=> NULL
FALSK ELLER NULL => NULL. Da kriterierne ikke resulterer i TRUE, vælger du ikke NULL.
Og hvis værdien er en tom streng '', ' ' eller en hvilken som helst længde:
CON.EMAILADDRESS IS NOT NULL
=> SANDCON.EMAILADDRESS != ' '
=> FALSK
SAND ELLER FALSK => SAND. Du vælger den tomme streng.
Jeg formoder, at det var det, der forvirrede dig:på trods af at du ved en fejl har brugt OR i stedet for OG du stadig fjernede nogle tomme strenge, men ikke alle.
Så:
WHERE CON.EMAILADDRESS IS NOT NULL AND CON.EMAILADDRESS != ' ';
Eller som en hvilken som helst streng != ''
kan ikke være NULL (NULL != ''
=> NULL, ikke SAND), blot:
WHERE CON.EMAILADDRESS != '';