decode函数和Java 三元表达式是一样的
就以下SQL语句为例
select vsv.Vendorcode Vendor_Code,
vsv.Vendorname Vendor_Name,
vsv.vendor_type,
vsv.Vendor_Site_Code,
vsv.start_date_active,
vsv.end_date_active,
vsv.inactive_date,
vsv.last_update_date,
vsv.creation_date,
decode(vsv.Purchasing_Site_Flag, 'Y', '是', '否')
Purchasing_Site_Flag,
decode(vsv.Pay_Site_Flag, 'Y', '是', '否') Pay_Site_Flag,
decode(vsv.Purchasing_Site_Flag, 'Y', '可采购', '不可采购') ||
decode(vsv.Pay_Site_Flag, 'Y', '可付款', '不可付款')
Purchasing_pay_state,
case when(vsv.inactive_date is null or trunc(vsv.inactive_date)
> trunc(sysdate)) and (vsv.end_date_active is null
or trunc(vsv.end_date_active)
> trunc(sysdate)) then '是' else
'否' end active_state,
vsv.currency,
vsv.LoginScm_Flag,
case when length(Wip_Supply_Locator_Name)>0 then
'委外' else '普通' end is_wip_vendor,
Wip_Supply_Locator_Name,
vsv.creation_date,
vsv.last_update_date from apps.view_scm_vendor_detail vsv
既decode(vsv.Purchasing_Site_Flay,'Y','是',' 否')既
vsv.Purchasing==Y?"是":"否".如果表(或视图)vsv中的字段Purchasing_Site_Flay(采购标志)的值为Y那么select出的vsv.Purchasing
值为是,否则否。
length方法是返回表或视图中字段的值的长度。运用length(Wip_Supply_Locator_Name)>0
1.trunc(for dates)
trunc函数为指定元素而截去的日期值。
其具体的语法格式如下:
trunc(date[,fmt])
其中:
date 一个日期值
fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去
下面是该函数的使用情况:
trunc(TO_DATE(’24-Nov-1999 08:00 pm’,’dd-mon-yyyy hh:mi am’))
=’24-Nov-1999 12:00:00 am’
trunc(TO_DATE(’24-Nov-1999 08:37 pm’,’dd-mon-yyyy hh:mi am’,’hh’))
=’24-Nov-1999 08:00:00 am’
2.(for number)
trunc函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
其具体的语法格式如下
trunc(number[,decimals])
其中:
number 待做截取处理的数值
decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分
下面是该函数的使用情况:
trunc(89.985,2)=89.98
trunc(89.985)=89
trunc(89.985,-1)=80
注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。
其中pl/sql中 case when……then Yes else No
end;when和then之间还嵌套其他条件语句