2017-01-13 5 views
0

다음과 같이 MySQL에서 쿼리를 설정했지만 어떤 이유로 'contact_CompanyID'열이 NULL 인 결과가 포함되지 않습니다. 이론적으로 쿼리에는 'contact_CompanyID'가 2311 또는 1 인 결과가 포함되지 않아야합니다. 따라서 'contact_CompanyID'가 NULL (2311 또는 1과 같지 않음)의 결과가 표시되지 않는 이유는 무엇입니까? 당신이 쿼리에서 볼 수 있듯이, 나는 다른 방법을 시도했지만 그들 중 누구도 작동하지 않습니다 (주석 처리 된 행).NULL 값을 사용하여 MySQL에 결과가 표시되지 않습니다.

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

감사합니다.

답변

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 ; 
0

contact_CompanyID에 공백이있을 수 있습니다.

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