1

Oracle では、特定の null 列を持つ行の数をカウントするタスクがあります。

私はクエリを持っています:

select count(MY_COL) from My_Table where MY_COL is null;

これはゼロの結果を返します。

これがゼロの結果とクエリを返すのはなぜですか

select count(*) from My_Table where MY_COL is null;

正しい結果を返しますか?

4

1 に答える 1

6

どちらの結果正しいです。

select count(col_name)null 値に関係なく、すべてのレコードをカウントしながらcol_name、null以外のレコードをカウントします。select count(*)

これはタヒチで文書化されています:

exprを指定すると、 COUNT は expr がNULLでない行の数を返します。すべての行をカウントすることも、 exprの個別の値のみをカウントすることもできます。

アスタリスク (*) を指定すると、この関数は、重複および NULL を含むすべての行を返します。

COUNT が null を返すことはありません。

于 2013-09-06T22:19:02.190 に答える