2009-10-27 25 views
10

null DateTime値を持つレコードの数を数えようとしています。しかし何らかの理由で私の試みは失敗しました。私は運なしで次の2つのクエリを試してみました:SQL Server 2005 - Null DateTimeの値を確認します。

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

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

を私が間違って何をしているのですか?すべてのレコードを照会すると、BirthDateがNULLのレコードが表示されます。

答えて

22
SELECT COUNT(*) 
FROM Person 
WHERE BirthDate IS NULL 
3

あなたが使用する必要があり、この

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

を試していない "= NULL"

SELECT 
    COUNT('') 
FROM 
    Person p 
WHERE 
    BirthDate IS NULL 
+0

wこんにちは空の文字列? – Fredou

+0

空の文字列を使用すると、データが取得されないため空の文字列だけがDBに読み込まれることが少なくなります。 – MattB

+3

しかし、私の理解では、COUNT(*)は何もロードしません。基本カウントだけです。少なくとも現代のSQL Serverインスタンスでは。 –

3

これは、NULLでCOUNTを実行しようとしているために起こっています。私は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*/

+0

1/0の良い点。それは動作しますか? ;-) EXISTSでは、はい、私はこれを試していませんでした(今はできません) – gbn

+0

確かに動作します。 –

+0

試してみました。できます。奇妙な。 –

関連する問題