sql >> Base de Datos >  >> RDS >> Mysql

valores distintos mysql sin cadena vacía y NULL

Tu único problema es que usas OR en lugar de AND.

Veamos el caso donde el valor es NULL:

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

FALSO O NULO => NULO. Como los criterios no dan como resultado VERDADERO, no seleccione NULL.

Y si el valor es una cadena vacía '', '', o cualquier longitud:

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

VERDADERO O FALSO => VERDADERO. Seleccionas la cadena vacía.

Supongo que esto es lo que te confundió:a pesar de haber usado OR por error en lugar de AND, eliminaste algunas cadenas vacías, pero no todas.

Entonces:

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

O, como cualquier cadena != '' no puede ser NULL (NULL != '' => NULO, no es VERDADERO), simplemente:

WHERE CON.EMAILADDRESS != '';