SELECT COUNT(*) FROM T1,T2 WHERE T2.ID = 'F' GROUP BY T2.NAME;
这时候count(*)值不是null,是因为没有记录,所以用nvl也不行,下面的方法也不好,当有数据就不正确了
select count(*) from (SELECT COUNT(*) count1 FROM T1,T2 WHERE T2.ID = 'F' GROUP BY T2.NAME);
这时候count(*)值不是null,是因为没有记录,所以用nvl也不行,下面的方法也不好,当有数据就不正确了
select count(*) from (SELECT COUNT(*) count1 FROM T1,T2 WHERE T2.ID = 'F' GROUP BY T2.NAME);
-------
count(1)
0
),0) FROM DUAL;
返回0不大合理count(*)是根据T2.name分组 后 每种name的个数
这里,t2.name都没有,那来的0呢?
2 return number
3 is
4 num number := 1;
5 begin
6 select count(*) into num from v group by v1;
7 return num;
8 end;
9 /Function created.SQL> select aaa(1) from dual; AAA(1)
----------
SQL> select nvl(aaa(1),'0') from dual;NVL(AAA(1),'0')
---------------
0
select count(*) into num from v group by v1;
返回的是null
但是,select count(*) from v group by v1;
返回的是什么?
from dual where exists (select null from t where username='LG')
select 0 from dual where not exists
(SELECT COUNT(*) FROM T1,T2 WHERE T2.ID = 'F' GROUP BY T2.NAME)
union all
select * from (SELECT COUNT(*) FROM T1,T2 WHERE T2.ID = 'F' GROUP BY T2.NAME)用nvl是不行的,可以试下
SELECT nvl(COUNT(*),0) FROM T WHERE 1>2 GROUP BY T.ID
结果仍然是空,因为不存在分组,所以没有记录
select 0 from dual where not exists
(SELECT COUNT(*) FROM T1,T2 WHERE T2.ID = 'F' GROUP BY T2.NAME)
union all
SELECT COUNT(*) FROM T1,T2 WHERE T2.ID = 'F' GROUP BY T2.NAME