OracleOracle 中 decode 函数用法

Oracle 中 decode
函数用法

义解释:
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)

欠函数的意义如下:

IF 条件=值1 THEN
 

   RETURN(翻译值1)

ELSIF 条件=值2 THEN
 

   RETURN(翻译值2)

   …… ELSIF
条件=值n

THEN   

  RETURN(翻译值n)

ELSE  

   RETURN(缺省值)

END IF

decode(字段或字段的运算,值1,值2,值3)

  
这个函数运行的结果是,当字段或字段的运算的值等于值1常常,该函数返回值2,否则回值3
 当然值1,值2,值3也可以是表达式,

是函数使得一些sql语句简单了累累

动用办法: 1、比较特别小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual;

–取较小值
sign()函数根据某值是0、正数还是负数,分别返回0、1、-1

例如:

变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果吧“变量1”,达到了获得较小值的目的。

2、此函数用在SQL语句被,功能介绍如下:
Decode函数与同多级嵌套的 IF-THEN-ELSE语词相似。

base_exp与compare1,compare2等等依次进行较。
如果base_exp和 第i 独compare项匹配,就回第i 个照应之value 。

如果base_exp及其他的compare值都无配合,则归default。
每个compare值顺次求值,如果发现一个配合,则剩下的compare值(如果还有的话)就还不再求值。

一个为NULL的base_exp为看与NULL compare值等价格。
如果需要的话,每一个compare值都让转移成为和率先单compare
值相同之数据类型,这个数据类型也是返回值的型。

Decode函数在实质上付出中老之有用
结合Lpad函数,

什么如主键的值自动加1并于头里补0

select
LPAD(decode(count(记录编号),0,1,max(to_number(记录编号)+1)),14,’0′)

笔录编号 from tetdmis
eg: select decode(dir,1,0,1) from a1_interval dir
的值是1变为0,是0则变为1

以自己而询问某班男生和女生的数量分别是稍稍?

通常我们这样写:
select count(*) from 表 where 性别 = 男;

select count(*) from
表 where 性别 = 女;

如若想展示到齐还要union一下,太累了

故而decode呢,只待平等句话 select
decode(性别,男,1,0),decode(性别,女,1,0) from 表;

select
entry.id,entry.peer_id, entry.tran_jrnl_id, account1.account_no, 
to_char(entry.fiscal_date,’YYYY-MM-DD’) as
fiscal_date2,entry.summary_type_code,
DECODE(entry.direct,’C’,’贷’,’D’,’借’,’未知方向’) as entry_direct ,
entry.amount, entry.balance,
DECODE(entry.balance_direct,’C’,’贷’,’D’,’借’,’未知方向’) as
balance_direct , entry.voucher_number, entry.voucher_type,
DECODE(account1.direct,’C’,’贷’,’D’,’借’,’未知方向’)  as
account_direct, entry.entry_type_code , entry.OCCUR_STAMP,
entry.usage  from account account1, entry where ( account1.account_no =
‘%s’ and account1.id = entry.account_id)  and (entry.entry_type_code
<> ‘INIT’ and entry.post_status = ‘POSTED’)  %s %s ”
%(acct_no,from_date,due_date);

 

 

相关文章