SQL Server 2005 - проверка нулевого значения DateTime - PullRequest
14 голосов
/ 27 октября 2009

Я пытаюсь подсчитать количество записей, имеющих нулевое значение DateTime. Однако по какой-то причине мои попытки провалились. Я безуспешно пробовал следующие два запроса:

SELECT COUNT(BirthDate) 
  FROM Person p
 WHERE p.BirthDate IS NULL

и

SELECT COUNT(BirthDate)
  FROM Person p
 WHERE p.BirthDate = NULL

Что я делаю не так? Я могу видеть записи с датой рождения, равной NULL, когда я запрашиваю все записи.

Ответы [ 5 ]

28 голосов
/ 27 октября 2009
SELECT COUNT(*)
FROM Person
WHERE BirthDate IS NULL
15 голосов
/ 27 октября 2009

Все ответы верны, но я объясню почему ...

COUNT (столбец) игнорирует NULL, COUNT (*) включает NULL.

Так что это работает ...

SELECT COUNT(*)
FROM Person
WHERE BirthDate IS NULL
4 голосов
/ 27 октября 2009

Это происходит потому, что вы пытаетесь выполнить COUNT для NULL. Я думаю, что если вы откроете вкладку сообщений, у вас может появиться там сообщение: NULL values eliminated from aggregate

То, что вы должны изменить, - это поле, на которое вы рассчитываете

Select Count (1) FROM Person WHERE BirthDate IS NULL

Select Count (*) FROM Person WHERE BirthDate IS NULL

Select Count (1/0) FROM Person WHERE BirthDate IS NULL

Select Count ('duh') FROM Person WHERE BirthDate IS NULL /* some non null string*/

4 голосов
/ 27 октября 2009

попробуйте

SELECT     COUNT(*) 
FROM     Person p
WHERE     p.BirthDate IS NULL
1 голос
/ 27 октября 2009

Вам нужно использовать «IS NULL», а не «= NULL»

SELECT
  COUNT('')
FROM
  Person p
WHERE
  BirthDate IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...