Mysql
 sql >> Base de données >  >> RDS >> Mysql

valeurs distinctes mysql sans chaîne vide et NULL

Votre seul problème est que vous utilisez OU au lieu de ET.

Regardons le cas où la valeur est NULL :

  • CON.EMAILADDRESS IS NOT NULL => FAUX
  • CON.EMAILADDRESS != ' ' => NUL

FAUX OU NULL => NULL. Comme le critère ne donne pas TRUE, vous ne sélectionnez pas NULLs.

Et si la valeur est une chaîne vide '', ' ', ou n'importe quelle longueur :

  • CON.EMAILADDRESS IS NOT NULL => VRAI
  • CON.EMAILADDRESS != ' ' => FAUX

VRAI OU FAUX => VRAI. Vous sélectionnez la chaîne vide.

Je suppose que c'est ce qui vous a dérouté :bien que vous ayez utilisé par erreur OU au lieu de ET, vous avez quand même supprimé certaines chaînes vides, mais pas toutes.

Donc :

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

Ou, comme n'importe quelle chaîne != '' ne peut pas être NULL (NULL != '' => NULL, pas TRUE), simplement :

WHERE CON.EMAILADDRESS != '';