SQL解码大小写时


decode (case when sd='N' and sr_corp_support='0' then sr_corp_agree else null end, '1','0','0','1','') as sr_corp_agree,

嗨,我有困难理解这段代码在我看来,当某个表述为1时,我们得到0,当某个语句为0时,我们得到1

但是我不太确定

你能帮我解释一下当语句into为0或1时如何解释这种情况吗

谢谢。

This:

decode(
case when sd='N' and sr_corp_support='0' then sr_corp_agree else null end,
'1','0',
'0','1',
''
) as sr_corp_agree

可以重写为:

CASE
WHEN sd='N' AND sr_corp_support='0' AND sr_corp_agree = '1'
THEN '0'
WHEN sd='N' AND sr_corp_support='0' AND sr_corp_agree = '0'
THEN '1'
ELSE NULL -- Same as ''
END AS sr_corp_agree

中文:如果sdsr_corp_support列值分别为N0,则如果sr_corp_agree10,则分别输出相反的01,并且对于任何其他sd,sr_corp_supportsr_corp_agree值输出空字符串(在Oracle中,与NULL相同)。