首页 > 数据库 > Oracle > decode用法详解
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 都可以是函数或计算表达式。
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
QDERP
SCM
JF900
CX900
JF790
TDS
ERP2SCM
ZYY
ZOUYY
JFGS
DSG
SCOTT
MDDATA
TSMSYS
DIP
ORACLE_OCM
DBSNMP
SYSMAN
EXFSYS
DMSYS
WMSYS
ORDSYS
XDB
OLAPSYS
SI_INFORMTN_SCHEMA
ORDPLUGINS
MDSYS
CTXSYS
ANONYMOUS
MGMT_VIEW
OUTLN
SYS
SYSTEM
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13067617/viewspace-1115315/ ,如需转载,请注明出处,否则将追究法律责任。