2017-01-13 9 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

以下をご確認ください。

使用できる方法の1つは、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に空白が入っている可能性があります。偽として扱われる -

ほとんどNULL値の任意の比較がNULLと評価されたクエリ

SELECT contact_ID, contact_FirstName, contact_LastName, contact_CompanyID 
FROM Contact 
WHERE contact_LastName = 'Dodd' 
and length(trim(contact_CompanyID)) = 0 
関連する問題