2017-01-13 1 views
0

Also habe ich eine Abfrage in MySQL wie unten eingerichtet, aber aus irgendeinem Grund wird es keine Ergebnisse enthalten, wo die Spalte 'contact_CompanyID' NULL ist. Theoretisch sollte die Abfrage keine Ergebnisse enthalten, bei denen die 'contact_CompanyID' entweder 2311 oder 1 ist. Warum werden also die Ergebnisse nicht angezeigt, wenn 'contact_CompanyID' NULL ist (weil NULL nicht gleich 2311 oder 1 ist). Wie Sie in der Abfrage sehen können, habe ich verschiedene Methoden ausprobiert, aber keine von ihnen funktioniert (die auskommentierten Zeilen).Ergebnisse werden in MySQL nicht mit NULL-Werten angezeigt

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

Vielen Dank.

Antwort

0

Fast jeder Vergleich auf einem NULL Wert NULL wertet - die als falsch behandelt wird.

Eine Methode, die Sie verwenden können, ist der Vergleich NULL -safe. In MySQL würde dies wie folgt aussehen:

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 kann Leerzeichen enthalten.

Bitte überprüfen Abfrage folgende

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