关于max()函数问题,急!

ofriend 2004-09-07 02:08:25
select max(kkk) as ggg from table2

如果表table2没有记录,返回的是什么??
...全文
250 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
海清 2004-09-07
  • 打赏
  • 举报
回复
A. select max(kkk) as ggg from table2

B. select max(kkk) as ggg from table2 GROUP BY XXXX

如果表table2没有记录,上述两个语句返回的结果是不一样的
A返回一条纪录,但MAX的结果是NULL.
B返回的结果是空集,连纪录都没有返回。
bzszp 2004-09-07
  • 打赏
  • 举报
回复
放在外边就可以了
经常在存储过程里这样来防止no_data_found 异常

14:23:30 SQL> select nvl(max(aaa),0) from t;

NVL(MAX(AAA),0)
---------------
0

已用时间: 00: 00: 00.15
doulikeme 2004-09-07
  • 打赏
  • 举报
回复
或者吧NVL 放外面吧
doulikeme 2004-09-07
  • 打赏
  • 举报
回复
同意楼上,这个可能行吧: decode(max(kkk),NULL,0,max(kkk))
bzszp 2004-09-07
  • 打赏
  • 举报
回复
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
bzszp 2004-09-07
  • 打赏
  • 举报
回复
流氓兔:
这样试没有什么效果的,因为表里面就没有为null的数据行
所以这样还是返回null,不会是0
bluelamb 2004-09-07
  • 打赏
  • 举报
回复
select max(nvl(kkk,0)) as ggg from table
如果表中没有数据,就返回0
yujiabian 2004-09-07
  • 打赏
  • 举报
回复
什么都没有!当你这样要实现的话,你可以如下:
select max(nvl(kkk,0)) ggg from table2
bzszp 2004-09-07
  • 打赏
  • 举报
回复
null

14: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 null

PL/SQL 过程已成功完成。

已用时间: 00: 00: 00.57
14:10:32 SQL>

17,378

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧