sql >> Databasteknik >  >> RDS >> Mysql

mysql distinkta värden utan tom sträng och NULL

Ditt enda problem är att du använder OR istället för AND.

Låt oss titta på fallet där värdet är NULL:

  • CON.EMAILADDRESS IS NOT NULL => FALSKT
  • CON.EMAILADDRESS != ' ' => NULL

FALSE ELLER NULL => NULL. Eftersom kriterierna inte resulterar i TRUE väljer du inte NULLs.

Och om värdet är en tom sträng '', ' ' eller vilken längd som helst:

  • CON.EMAILADDRESS IS NOT NULL => SANT
  • CON.EMAILADDRESS != ' ' => FALSKT

SANT ELLER FALSKT => SANT. Du väljer den tomma strängen.

Jag antar att det är detta som förvirrade dig:trots att du av misstag använde OR istället för OCH du tog fortfarande bort några tomma strängar, men inte alla.

Så:

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

Eller som valfri sträng != '' kan inte vara NULL (NULL != '' => NULL, inte TRUE), helt enkelt:

WHERE CON.EMAILADDRESS != '';


  1. com.zaxxer.hikari.pool.PoolInitializationException:Undantag under poolinitiering

  2. VISA ALLA datumdata mellan två datum; om det inte finns någon rad för ett visst datum, visa noll i alla kolumner

  3. Varför returnerar IS NOT NULL NULL-värden för en Varchar(max) i SQL Server?

  4. Lagrad procedur med valfria WHERE-parametrar