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);

解决方案 »

  1.   

    select count(1) from dual where 1 = 2;
    -------
    count(1)
          0
      

  2.   

    SELECT NVL(( SELECT COUNT(*) FROM T1,T2 WHERE T2.ID = 'F' GROUP BY T2.NAME;
    ),0) FROM DUAL;
      

  3.   

    SELECT COUNT(*) FROM T1,T2 WHERE T2.ID = 'F' GROUP BY T2.NAME;
    返回0不大合理count(*)是根据T2.name分组 后 每种name的个数
    这里,t2.name都没有,那来的0呢?
      

  4.   

    SQL> select count(*) from v group by v1;no rows selectedSQL> create or replace function aaa(a number)
      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;
    返回的是什么?
      

  5.   

    select count(*) 
    from dual where exists (select null from t where username='LG')
      

  6.   

    想到办法了,这个应该可以的
    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
    结果仍然是空,因为不存在分组,所以没有记录
      

  7.   

    上面写罗嗦了点
    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