oracle中count(列名)不計算空值


測試一count(列名)是否計算空值
--建個測試表
carete table test(id number10),note varcahr2(10));
--插入數據
insert into test(id,note) values (1,'1');--note列有值

insert into test(id,note) values (2,'');--note有個''

insert into test(id) values (3);--note為空值

commite;

--使用count(*/常量)
select count(*) from test;

  COUNT(*)
----------
         3

select count(1) from test;

  COUNT(1)
----------
         3

--使用count(列名)
select count(id) from test;

  COUNT(id)--這里是改上面的所以id是小寫的,默認應該是count(ID)
----------
         3

select count(note) from test;

 COUNT(NOTE)
----------
         1

結論:count(列名)不計算空值的列

測試二--是否根據rowid來計算
rowid是物理地址,union all單表
select count(id) from (select rowid rid,id from test union all
    select rowid rid,id from test);

COUNT(ID)
----------
         6
顯然不是rowid來計算的,rowid是相當於一個列;相比較rowid更可能和count()結果一致的應該是rownum,rownum序列的最終值應該是count的結果;

結論:count不是依據rowid計算的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM