oracle decode函数的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle decode函数的用法相关的知识,希望对你有一定的参考价值。

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;

以上是关于oracle decode函数的用法的主要内容,如果未能解决你的问题,请参考以下文章

oracle decode函数

oracle decode的用法

oracle decode函数用法

Oracle 中 流程控制函数 decode用法

Oracle DECODE函数的用法详解

Oracle 中 decode 函数用法