了解SQL中的Decode函数



有人能告诉我解码函数如何在SQL中工作吗?我正在努力理解这一行

DECODE(table1.R1_REGION, 'Y','Y',DECODE(table1.R2_REGION,'Y','Y','N')) R1_OR_R2_REGION

我不确定这个字段R1_OR_R2_REGION是如何使用解码fn填充的。

DECODE在文档中有解释;在简单的情况下,很容易理解。当事情变得复杂时,DECODE的编写、维护和理解就变得非常困难。

幸运的是,我们有CASE,这是简单得多。如果将您发布的DECODE重写为以下表达式,也许您会更容易理解:

#1 case when table1.r1_region = 'Y' then 'Y'
#2     else case when table1.r2_region = 'Y' then 'Y'
#3               else 'N'
end
end r1_or_r2_region

这正是DECODE所做的(将CASE中的数字与DECODE中的数字匹配):

DECODE(table1.R1_REGION, 'Y','Y',DECODE(table1.R2_REGION,'Y','Y','N')) 
------------------------  ------------------------------  ---                      
#1                        #2                              #3
  • 如果table1.r1_region等于Y,则结果为Y
  • ,检查table1.r2_region是否等于Y
    • 如果是,结果是Y
    • 否则,结果为N

最新更新