null14:09:53 SQL> set serveroutput on
14:10:06 SQL> declare
14:10:08   2  c varchar2(10);
14:10:08   3  begin
14:10:08   4  select max(aaa) into c from t;
14:10:09   5  dbms_output.put_line(nvl(c,'is null'));
14:10:29   6  end;
14:10:31   7  /
is nullPL/SQL 过程已成功完成。已用时间:  00: 00: 00.57
14:10:32 SQL>

解决方案 »

  1.   

    什么都没有!当你这样要实现的话,你可以如下:
    select max(nvl(kkk,0)) ggg from table2
      

  2.   

    select max(nvl(kkk,0)) as ggg from table
    如果表中没有数据,就返回0
      

  3.   

    流氓兔:
    这样试没有什么效果的,因为表里面就没有为null的数据行
    所以这样还是返回null,不会是0
      

  4.   

    14:16:01 SQL> select * from t;未选定行已用时间:  00: 00: 00.15
    14:18:11 SQL> select max(nvl(aaa,0)) from t;MAX(NVL(AAA,0))
    ---------------
    已用时间:  00: 00: 00.32
      

  5.   

    同意楼上,这个可能行吧: decode(max(kkk),NULL,0,max(kkk))
      

  6.   

    放在外边就可以了
    经常在存储过程里这样来防止no_data_found 异常14:23:30 SQL> select nvl(max(aaa),0) from t;NVL(MAX(AAA),0)
    ---------------
                  0已用时间:  00: 00: 00.15
      

  7.   

    A. select max(kkk) as ggg from table2B. select max(kkk) as ggg from table2 GROUP BY XXXX如果表table2没有记录,上述两个语句返回的结果是不一样的
    A返回一条纪录,但MAX的结果是NULL.
    B返回的结果是空集,连纪录都没有返回。