如何在没有空字符串值和NULL值的情况下检索mysql不同的值
SELECT
DISTINCT CON.EMAILADDRESS AS 'E-MAIL'
FROM STUDENT
INNER JOIN CONTACT CON ON STUDENT.CONTACT_ID = CON.ID
WHERE
(CON.EMAILADDRESS IS NOT NULL
OR CON.EMAILADDRESS !=' ');
但在输出中仍然收到空电子邮件。无法弄清楚我做错了什么。
最佳答案
您唯一的问题是您使用 OR 而不是 AND。
让我们看一下值为NULL的情况:
CON.EMAILADDRESS 不为空
=> FALSECON.EMAILADDRESS != ' '
=> NULL
假或空 => 空。由于条件不会导致 TRUE,因此您不会选择 NULL。
如果该值为空字符串 ''、' ' 或任何长度:
CON.EMAILADDRESS 不为空
=> TRUECON.EMAILADDRESS != ' '
=> FALSE
真或假 => 真。您选择空字符串。
我想这就是让您感到困惑的地方:尽管错误地使用了 OR 而不是 AND,您仍然删除了一些空字符串,但不是全部。
所以:
WHERE CON.EMAILADDRESS IS NOT NULL AND CON.EMAILADDRESS != ' ';
或者,因为任何字符串 != ''
都不能为 NULL(NULL != ''
=> NULL,不是 TRUE),只需:
WHERE CON.EMAILADDRESS != '';
关于没有空字符串和 NULL 的 mysql 不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28169612/