ITPub博客

首页 > 数据库 > Oracle > decode用法详解

decode用法详解

Oracle 作者:onrails 时间:2013-01-06 11:19:42 0 删除 编辑

1 DECODE 中的if-then-else逻辑
在逻辑编程中,经常用到If – Then –Else
进行逻辑判断。在DECODE的语法中,实际上就是这样的逻辑处理过程。它的语法如下:

DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )  

Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果
当每个value值被测试,value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。
事实上,可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,Decode 结果就返回else 。
需要注意的是,这里的if、then及else 都可以是函数或计算表达式。
 2 DECODE 的简单例子
Oracle系统中就有许多数据字典是使用decode 思想设计的,比如记录会话信息的V$SESSION数据字典视图就是这样。
当用户登录成功后在V$SESSION中就有该用户的相应记录.
select sid,serial#,username, DECODE(command, 0,'None', 2,'Insert', 3,'Select',
6,'Update', 7,'Delete', 8,'Drop', 'Other') cmmand
from v$session where username is not null;


事例:
create table t as select username,default_tablespace,lock_date from dba_users;
select * from dba_users
select username,decode(to_char(lock_date,'yyyy'),null,'unlocked','2005','longlonglocked','2010','longlocked','locked')
status from t;

结果:
USERNAME STATUS

QDERP unlocked
SCM unlocked
JF900 unlocked
CX900 unlocked
JF790 unlocked
TDS unlocked
ERP2SCM unlocked
ZYY unlocked
ZOUYY unlocked
JFGS unlocked
DSG unlocked
SCOTT longlocked
MDDATA longlocked
TSMSYS longlocked
DIP longlonglocked
ORACLE_OCM locked
DBSNMP unlocked
SYSMAN unlocked
EXFSYS longlocked
DMSYS longlocked
WMSYS longlocked
ORDSYS longlocked
XDB longlocked
OLAPSYS longlocked
SI_INFORMTN_SCHEMA longlocked
ORDPLUGINS longlocked
MDSYS longlocked
CTXSYS longlocked
ANONYMOUS longlocked
MGMT_VIEW unlocked
OUTLN unlocked
SYS unlocked
SYSTEM unlocked

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13067617/viewspace-1115315/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2008-02-13