0

因此,我在 MySQL 中设置了一个查询,如下所示,但由于某种原因,它不包括列“contact_CompanyID”为 NULL 的结果。理论上,查询不应包含“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')

非常感谢。

4

2 回答 2

0

contact_CompanyID 可能带有空格。

请检查以下查询

 SELECT contact_ID, contact_FirstName, contact_LastName, contact_CompanyID 
 FROM Contact 
 WHERE contact_LastName = 'Dodd' 
 and length(trim(contact_CompanyID)) = 0
于 2017-01-13T12:55:36.037 回答
0

几乎所有对NULL值的比较都会评估为NULL-- 被视为错误。

您可以使用的一种方法是NULL-safe 比较。在 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 ;
于 2017-01-13T12:58:22.410 回答