结果未显示在具有空值的 MySQL 中



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

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')

非常感谢。

几乎任何对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 ;

contact_CompanyID可能带有空格。

请检查以下查询

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

相关内容

  • 没有找到相关文章

最新更新