Пытаетесь найти количество значений NULL для столбца, возвращающего 0? - PullRequest
1 голос
/ 03 июня 2011

В моей таблице есть столбец с несколькими различными значениями, которые я проверял с помощью group by.

Когда я делаю что-то подобное, возвращается число:

SELECT COUNT(*) FROM table WHERE age='';

Однако, когда я делаю это, он всегда возвращает 0, даже если это неверно:

SELECT COUNT(*) FROM table WHERE age=NULL;

Любая идея, почему это возвращает 0, когда он должен возвращать правильный результат?

Ответы [ 3 ]

6 голосов
/ 03 июня 2011
SELECT COUNT(*) FROM table WHERE age IS NULL;

Чтение 3.3.4.6. Работа со значениями NULL

Для проверки на NULL нельзя использовать операторы арифметического сравнения такие как =, <или <>.

Используйте IS NULL Вместо этого операторы NOT NULL:

1 голос
/ 03 июня 2011

Вы должны сказать «age is NULL», а не «age = null». NULL не равно чему-либо - это означает, что нет данных и вы не можете проверить на равенство.

1 голос
/ 03 июня 2011

NULL представляет неизвестное значение, поэтому технически NULL ничем не равен - , включая самого себя .

Вместо этого следует использовать IS NULL:

SELECT COUNT(*) FROM table WHERE age IS NULL
...