所以我在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