2010-10-12 7 views
10

wie mit NULL Wert in mysql behandeln wo in KLAUSELmysql NULL-Wert in den in KLAUSEL

ich versuche, wie

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

es nicht

arbeitet wie nur funktionieren:

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

wie kann ich es in WHERE IN arbeiten? es ist möglich ?

+0

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

Antwort

7

Nach meinem Verständnis möchten Sie jeden Datensatz mit 1,2,3 und null Wert ziehen.

Ich glaube nicht, dass es möglich ist, Null in den IN-Operator zu setzen. Es erwartet Werte und null ist gut .. kein Wert. Sie müssen also wirklich das OR mit der Null setzen, um das gewünschte Ergebnis zu erhalten.

6

Vielleicht diese Information aus den MySQL Reference Manual hilft:

mit dem SQL-Standard zu entsprechen, IN kehrt nicht nur NULL, wenn der Ausdruck auf der linken Seite NULL ist, sondern auch, wenn keine Übereinstimmung in dem gefunden wird Liste und einer der Ausdrücke in der Liste ist NULL.

0

sollte folgende Erklärung helfen:

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

Willkommen SO, bitte Ihre Antwort Code nur Antworten erklären sind in vielen Fällen nicht sehr nützlich. – Jeet