oracle case用法疑问
在查询的时候我用
select t.id,(case t.people_sum when null then 0 when 0 then 0 else nvl(t.execmoney,0)/t.people_sum end) as "人均金额" from myTable .
查出来后人均金额竟然还有为空的,这是为什么呢,正常的话应该没有为空才对吧,因为我已经用case把people_sum为空设成了0,又用nvl(t.execmoney,0)把execmoney也设成了0。可怎么还有空的呢,难道与case的执行顺序有关么?
因为t.people_sum有为0的情况,如果为0不能做除数,所以为空,你去掉t.people_sum,就知道了
上面说错了
因为t.people_sum有为null的情况,如果null做除数,所以为空,你去掉t.people_sum,就知道了
你可以在t.people_sum 在用一次case
分開寫,逐個測試吧!
when null then 0?
这样也行?
这句不起作用,用decode:
nvl(t.execmoney,0)/t.people_sum
你的除数为0啊,这个语句有问题吧,实在要这样就试试
下面这个
select t.id,
nvl(t.execmoney,0)/nvl(t.people_sum,0) as "人均金额"
from myTable .
SQL code:
SELECT T.ID ,
相关问答:
大家好,我现在把oracle服务器上面的原始文件,下载到本机了.我想在本机访问数据库怎么设置啊.是不是类似可以建立一个什么虚拟服务器来实现.请大家出出主意
引用
大家好,我现在把oracle服务器上面 ......
exp user/password@dbname file=c:\table.dmp tables=jbitaku,jbitakum grants=y
然後按回車鍵 說明: user/password@dbname 分別表示用戶名,密碼和服務名 f ......
请问这个缓冲池是怎么回事啊?可以连接缓冲池利用其中的数据吧?怎么用?
这个是oracle自动做的,一般应用程序是操作不了的。
不能直接连接吗?
引用
不能直接连接吗?
不能
那缓冲池里的数据也不能查询 ......
SQL code:
declare
v_deptno number(2);
v_dname varchar2(14);
begin
dbms_output.put_line('请输入部门号和部门名:');
v_deptno:=&deptno;
v_dname:='&dname';
insert into dept01(deptno,dnam ......