Mysql
 sql >> Database >  >> RDS >> Mysql

mysql valori distinti senza stringa vuota e NULL

Il tuo unico problema è che usi OR invece di AND.

Diamo un'occhiata al caso in cui il valore è NULL:

  • CON.EMAILADDRESS IS NOT NULL => FALSO
  • CON.EMAILADDRESS != ' ' => NULLO

FALSO O NULLO => NULLO. Poiché i criteri non risultano TRUE, non selezioni NULL.

E se il valore è una stringa vuota '', ' ' o qualsiasi lunghezza:

  • CON.EMAILADDRESS IS NOT NULL => VERO
  • CON.EMAILADDRESS != ' ' => FALSO

VERO O FALSO => VERO. Seleziona la stringa vuota.

Suppongo che questo sia ciò che ti ha confuso:nonostante tu abbia usato erroneamente OR invece di AND hai comunque rimosso alcune stringhe vuote, ma non tutte.

Quindi:

WHERE CON.EMAILADDRESS IS NOT NULL AND CON.EMAILADDRESS != ' ';

Oppure, come qualsiasi stringa != '' non può essere NULL (NULL != '' => NULL, non TRUE), semplicemente:

WHERE CON.EMAILADDRESS != '';