oracle decode比较时间,pl/oracle decode,trunc函数和length方法以及条件判断

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之间还嵌套其他条件语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OracleDECODE函数可以用于多条件判断,其语法如下: DECODE(expr, search1, result1, search2, result2, ..., default) 其中,expr为要判断的表达式,search1、search2等为要比较的值,result1、result2等为对应的结果,default为默认结果。 DECODE函数会从左到右依次比较search1、search2等和expr的值,如果匹配成功,则返回对应的result1、result2等值,如果都不匹配,则返回default值。 例如,以下DECODE函数可以根据不同的性别返回不同的称呼: SELECT DECODE(gender, 'M', '先生', 'F', '女士', '未知') AS title FROM customers; 在上面的例子中,如果gender为'M',则返回'先生',如果为'F',则返回'女士',如果都不匹配,则返回'未知'。 ### 回答2: Oracle数据库中的DECODE函数是一种多条件分支语句,可以根据不同的条件对不同的值进行返回。它的语法如下: DECODE(expr, search1, result1, search2, result2, …, default) 其中,expr是要进行分析的表达式;search1、search2等是要进行匹配的值;result1、result2等是与相应的search进行匹配的结果;default是可选参数,表示在没有匹配项时返回的默认结果。 对于多条件DECODE函数,可以使用逗号将多个匹配项和结果进行分隔,从而实现对多个条件的匹配。例如: SELECT DECODE(grade, 'A', 'Excellent', 'B', 'Good', 'C', 'Fair', 'D', 'Poor', 'Fail') AS result FROM students; 这个例子中,DECODE函数根据学生的分数等级(grade)进行多条件的匹配,如果grade是A,则返回“Excellent”,如果是B,则返回“Good”,以此类推。 需要注意的是,DECODE函数的匹配是按顺序进行的,即会依次匹配每一个search值,并返回与之对应的result。因此,如果有多个条件都可以匹配到同一个值,那么DECODE函数只会返回第一个匹配的结果。 除了DECODE函数Oracle数据库还有其他的多条件分支语句,如CASE语句和IF语句,它们也可以实现类似的多条件匹配功能。但对于需要匹配多个值的情况,DECODE函数可以更加简洁明了地实现多条件分支。 ### 回答3: Oracle中的decode函数是一个非常常用的函数,它用于在查询中根据条件选择不同的结果。decode函数可以有多个条件,也可以嵌套使用,以下是关于Oracle decode函数条件的详细解释: 1. decode函数的基本语法 decode(expr, search1, result1 [, search2, result2, ...] [, default] ) 其中,expr是要判断的表达式,search是要匹配的值,result是匹配成功后要返回的结果,可以使用多组search和result。如果expr与search相等,则返回对应的result,如果没有匹配成功,则返回default的值(可选)。 例如: select decode(1, 1, 'Yes', 'No') from dual; 返回结果为Yes,因为1匹配了第一个search参数。 2. decode函数的多条件使用 在decode函数中,可以添加多个搜索条件以及结果,它们用逗号隔开。这样,当搜索条件不止一个时,可以根据需要指定多个搜索条件和对应的结果。 例如: select decode(1, 1, 'one', 2, 'two', 'other') from dual; 返回结果为one,因为1匹配了第一个search参数,而2没有匹配成功,所以返回了最后一个结果。 3. decode函数的嵌套使用 decode函数还可以嵌套使用,以实现更复杂的逻辑。嵌套后的函数可以根据需要添加多个搜索条件以及结果。 例如: select decode(decode(1, 1, 'a', 'b'), 'a', 'one', 'b', 'two', 'other') from dual; 这个例子演示了嵌套使用decode函数。首先,内部的decode函数将返回a,然后外部的decode函数会返回one,因为它匹配了外部search参数中的'a'。 总结: Oracle decode函数可以用于根据条件选择不同的结果,它可以有多个条件和嵌套使用。在使用时,需要根据需要指定搜索条件和对应的结果,在返回值中进行判断和筛选。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值