0

を使用して、特定のタイプのレコードがいくつあるかをチェックするクエリがありますcount()

select count(*) from abc where date="some value"

ここで、クエリがまたはを返す可能性はありますnullDBNull? それらを確認する必要がありますか?

4

6 に答える 6

5

私はそうは思いません: カウントしているので、ゼロ以上を返すことができます。

NULLno resultsthere're zero resultsであるため、間違った結果になります。

于 2012-12-03T14:45:34.613 に答える
3

いいえ、常に以上の数値を返し0ます。

于 2012-12-03T14:45:48.633 に答える
1

やってみなよ:

SELECT COUNT(*) WHERE 1=2
--Returns 0

MSDNごと:

COUNT は常にintデータ型の値を返します。

于 2012-12-03T15:06:27.303 に答える
0

これが私がすることです:

if (rdr.HasRows)
        {
          rdr.Read();
          if (rdr["MyField"] != DBNull.Value)
                {
                   bla bla....
                }

そうです、DBNullをチェックしてください。

于 2012-12-03T14:54:09.257 に答える
0

ExecuteScalar を使用している場合、呼び出しは DbNull オブジェクトではなく null を取得すると思います。

常に値を受け取るために私が行っていることは、リクエストをカプセル化することです: SELECT ISNULL((SELECT COUNT(date) FROM abc WHERE date = "some value"), 0)

サージ

于 2012-12-03T14:47:33.037 に答える
0

DbNullデータベース指向であるため、確認する必要があります。

この回答を参照してください

于 2012-12-03T14:48:12.433 に答える