2010-10-12 5 views
10

, как иметь дело с NULL значение в MySQL где в ПУНКТЕMySQL NULL значение в том, где в ПУНКТЕ

я стараюсь как

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

не работает

только работать, как:

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

Как я могу заставить его работать в WHERE IN? возможно ?

+0

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

ответ

7

Как я понимаю, вы хотите вытащить каждую запись с 1,2,3 и нулевым значением.

Я не думаю, что его можно поместить в оператор IN. Его ожидает, что значения и нуль хорошо .. не значение. Поэтому вам действительно нужно поставить OR с нулевым значением, чтобы получить желаемый результат.

6

Может быть, эта информация из MySQL Reference Manual помогает:

В соответствии со стандартом SQL, IN возвращает NULL не только если выражение в левой части равно NULL, но и, если совпадение не найдено в список и одно из выражений в списке: NULL.

0

следующее заявление должно помочь:

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

Добро пожаловать на SO, пожалуйста, объясните свой код ответа только ответы во многих случаях не очень полезны. – Jeet

Смежные вопросы