2010-10-12 20 views
10

jak radzić sobie z NULL wartości w mysql gdzie CLAUSEmysql wartość NULL w którym w punkcie

próbuję jak

SELECT * FROM mytable WHERE field IN(1,2,3,NULL) 

nie działa

działać tylko tak:

SELECT * FROM mytable WHERE field IN(1,2,3) OR field IS NULL 

jak mogę go uruchomić w WHERE IN? to jest możliwe ?

+0

https://stackoverflow.com/questions/129077/not-in-clause-and-null-values ​​ – ako

Odpowiedz

7

Zgodnie z moim rozumieniem, chcesz pobrać każdy rekord o wartości 1,2,3 i wartości pustej.

Nie sądzę, że jest możliwe umieszczenie wartości null w operatorze IN. Oczekuje wartości i wartości zerowej jest dobrze .. nie wartości. Więc naprawdę musisz umieścić wartość OR z wartością null, aby uzyskać pożądany wynik.

6

Może ta informacja z MySQL Reference Manual pomaga:

Aby zachować zgodność ze standardem SQL, IN zwraca NULL nie tylko wtedy, gdy wyraz po lewej stronie jest NULL, ale także wtedy, gdy nie zostanie znaleziony w list i jednym z wyrażeń na liście jest NULL.

0

następujące oświadczenie powinno pomóc:

SELECT * FROM mytable WHERE COALESCE(field,0) IN (1,2,3,0) 
+0

Witamy tak, proszę wyjaśnić swój kod odpowiedzi tylko odpowiedzi nie są bardzo przydatne w wielu przypadkach. – Jeet

Powiązane problemy