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>
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>
select max(nvl(kkk,0)) ggg from table2
如果表中没有数据,就返回0
这样试没有什么效果的,因为表里面就没有为null的数据行
所以这样还是返回null,不会是0
14:18:11 SQL> select max(nvl(aaa,0)) from t;MAX(NVL(AAA,0))
---------------
已用时间: 00: 00: 00.32
经常在存储过程里这样来防止no_data_found 异常14:23:30 SQL> select nvl(max(aaa),0) from t;NVL(MAX(AAA),0)
---------------
0已用时间: 00: 00: 00.15
A返回一条纪录,但MAX的结果是NULL.
B返回的结果是空集,连纪录都没有返回。