有人能告诉我解码函数如何在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
- 如果是,结果是