解码Oracle SQL

拉加夫

我最近遇到了一些解码查询。

我发现此解码功能有些令人困惑。以下是查询:

SELECT promo_id,
       DECODE(NVL(promo_cost,0),promo_cost, promo_cost * 0.25, 100) "Discount"
FROM promotions; 

SELECT promo_id,
       DECODE(promo_cost,10000, DECODE(promo_category, 'G1', promo_cost *.25, NULL), NULL) "Catcost";

我浏览了互联网,研究了一些文章,但似乎每个查询的DECODE有所不同。

任何人都可以向我解释这两个查询在做什么。

非常感谢你。

注意:这不是我的作业。我是一个职业音乐家,最近刚学过C和SQL,因为它很有趣。

拉利特·库马尔(Lalit Kumar B)

DECODE函数的语法为DECODE( expression , search , result [, search , result]... [, default] )

在您的第一个查询中:

DECODE(NVL(promo_cost,0),promo_cost, promo_cost * 0.25, 100)

以下是解释:

expression = NVL(promo_cost,0)
search     = promo_cost
result     = promo_cost * 0.25
default    = 100

所以,这意味着

IF NVL(promo_cost,0) = promo_cost
  THEN 
     output = promo_cost * 0.25
ELSE
     output = 100
END

也可以使用来解释相同的内容CASE

CASE 
   WHEN NVL(promo_cost,0) = promo_cost 
   THEN 
         promo_cost * 0.25
   ELSE 
      100 
END

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章