Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

valores distintos do mysql sem string vazia e NULL


Seu único problema é que você usa OR em vez de AND.

Vejamos o caso em que o valor é NULL:
  • CON.EMAILADDRESS IS NOT NULL => FALSO
  • CON.EMAILADDRESS != ' ' => NULO

FALSO OU NULO => NULO. Como os critérios não resultam em TRUE, você não seleciona NULLs.

E se o valor for uma string vazia '', '', ou qualquer tamanho:
  • CON.EMAILADDRESS IS NOT NULL => VERDADEIRO
  • CON.EMAILADDRESS != ' ' => FALSO

VERDADEIRO OU FALSO => VERDADEIRO. Você seleciona a string vazia.

Suponho que foi isso que o confundiu:apesar de ter usado erroneamente OR em vez de AND, você ainda removeu algumas strings vazias, mas não todas.

Então:
WHERE CON.EMAILADDRESS IS NOT NULL AND CON.EMAILADDRESS != ' ';

Ou, como qualquer string != '' não pode ser NULL (NULL != '' => NULL, não TRUE), simplesmente:
WHERE CON.EMAILADDRESS != '';