我最近遇到了一些解码查询。
我发现此解码功能有些令人困惑。以下是查询:
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,因为它很有趣。
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] 删除。
我来说两句