MySQL 中未显示 NULL 值的结果

Results not showing in MySQL with NULL values

所以我在 MySQL 中设置了一个查询,如下所示,但由于某些原因,它不会包含列 'contact_CompanyID' 为 NULL 的结果。理论上,查询不应包含 'contact_CompanyID' 等于 2311 或 1 的结果,那么为什么结果不显示 'contact_CompanyID' 为 NULL 的位置(因为 NULL 不等于 2311 或 1) .正如您在查询中看到的那样,我尝试了不同的方法,但其中 none 行得通(注释掉的行)。

SELECT contact_ID, contact_FirstName, contact_LastName, contact_CompanyID 

FROM Contact WHERE 

NOT contact_IsUnsubscribed 
AND NOT contact_HasLeftCompany 

#AND contact_CompanyID <> 2311 
#AND contact_CompanyID <> 1

#AND NOT contact_CompanyID = 2311 
#AND NOT contact_CompanyID = 1

#AND NOT FIND_IN_SET(contact_CompanyID,'2311,1')

非常感谢。

contact_CompanyID可能是白带space.

请检查以下查询

 SELECT contact_ID, contact_FirstName, contact_LastName, contact_CompanyID 
 FROM Contact 
 WHERE contact_LastName = 'Dodd' 
 and length(trim(contact_CompanyID)) = 0

几乎任何对 NULL 值的比较都会计算出 NULL——这被视为假。

您可以使用的一种方法是 NULL 安全比较。在 MySQL 中,这看起来像:

SELECT contact_ID, contact_FirstName, contact_LastName, contact_CompanyID 
FROM Contact
WHERE NOT contact_IsUnsubscribed  AND
      NOT contact_HasLeftCompany AND
      NOT contact_CompanyID <=> 2311 ;