温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

oracle decode函数的用法

发布时间:2020-08-04 05:17:49 来源:网络 阅读:1590 作者:会说话的鱼 栏目:关系型数据库

oracle decode函数,不管查询的结果是否满足‘PRIMARY’,参数中的select语句还是会执行的,通过查看执行计划就知道

set autotrace traceonly

select decode(database_role ,'PRIMARY', 
(select
trunc((size_MB-free_MB)*100/maxsize_MB) "retvalue"
from (
select
tablespace_name,case when sum(decode(autoextensible,'YES',1,0))>0 then 'YES'
else 'NO' end ext,
trunc(sum(bytes)/1024/1024) SIZE_MB,
trunc(sum(case when autoextensible='YES' then maxbytes else bytes
end)/1024/1024) MAXSIZE_MB
from dba_data_files
group by tablespace_name
) t1,
(
select tablespace_name,trunc(sum(bytes)/1024/1024) FREE_MB
from dba_free_space
group by tablespace_name
) t2,
(select tablespace_name
from dba_tablespaces
where contents='PERMANENT') t3
where t1.tablespace_name=t2.tablespace_name and t3.tablespace_name=t1.tablespace_name and t3.tablespace_name='SYSTEM'),0) as retvalue from v$database;

decode函数等价于cash when语句,只不过当条件比较多时,decode函数书写起来比较简洁一点而已

select case 
           when database_role  = 'PRIMARY' then  (select tname from tab where rownum=1)
           else '0' 
       end as retvalue 
from  v$database;
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI