oracle中decode的用法,详细介绍下么,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中decode的用法,详细介绍下么,相关的知识,希望对你有一定的参考价值。

(decode(a.mmail_no , 0 , 0 , (a.amount + a.disc_amount) *(1 + t.vat_perc / 100)))
这句话我看好长时间了没看懂。

基本语法:decode(column, resultVal, trueVal, falseVal),语义为如果Column = resultVal则结果是trueVal否则是falseVal。简单一点,可以将decode这句话转换为如下语义:
if(column = resultVal)
then
result = trueVal
else
result = falseVal
end if
相似的,将这个转换运用到你的decode就是:
if(a.mmail_no= 0)
then
result = 0
else
result = (a.amount + a.disc_amount) *(1 + t.vat_perc / 100)
end if
==================华丽的分割线====================================
当然了与oracle的decode最相近的语法是case when,转换如下:
select
case
when column = resultVal
then trueVal
else
falseVal
end
from yourtable
同样的,你的decode可以这样转换:
select
case
when a.mmail_no= 0
then 0
else
(a.amount + a.disc_amount) *(1 + t.vat_perc / 100)
end
from yourtable a
供你参考
参考技术A decode(a.mmail_no , 0 , 0 , (a.amount + a.disc_amount) *(1 + t.vat_perc / 100))
一点点分析:
对a.mmail_no进行判断。如果a.mmail_no为0 则输出结果为0,否则输出 (a.amount + a.disc_amount) *(1 + t.vat_perc / 100)

decode(列名,判断条件,符合判断条件的输出结果,不符合判断条件的输出结果)

这是decode最基本的用法。还有很多其它衍生的复杂的用法。
参考技术B 判断字段a.mmail_no如果是0 则返回0 如果不是0 返回 (a.amount + a.disc_amount) *(1 + t.vat_perc / 100)这个值 参考技术C 当a.mmail_no为0时显示为0,否则显示为(a.amount + a.disc_amount) *(1 + t.vat_perc / 100)) 参考技术D 意思是:查询a.mmail_no这个字段的值,如果是0则结果返回0,否则返回 (a.amount + a.disc_amount) *(1 + t.vat_perc / 100)这个结果。

以上是关于oracle中decode的用法,详细介绍下么,的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 中 流程控制函数 decode用法

Oracle DECODE函数的用法详解

oracle decode的用法

Android开发中读写office文件(word,ppt,excel)的操作实例大家能给详细介绍下么,网上例子太少了

对于JS 中编码(encode)和解码(decode)的三种方法

decode函数的用法法请教