CASE语句的这种结构比在WHEN前加上字段名要灵活得多。
我使用双大小写句子根据同一表中其他2列中可用的2个条件从表中的列中获取值,否则(否则)该函数在为null或0时应给出null。
代码示例如下:
CASE CODE
WHEN 'ABC'
CASE NAME WHEN 'XYZ'
THEN 'VALUE'
ELSE NULL
END
ELSE NULL
END
问题是,如果我在else之后使用NULL,那么它将所有(NULL值和值为0)作为NULL,或者如果我在else之后使用0而不是NULL,那么NULL和0值都被给定为0。我试着用很多方法来写这个句子,但我不知道它是否有效。希望有人能给我一些好的解决办法。
CASE WHEN CODE = 'ABC' AND NAME = 'XYZ' THEN 'VALUE' ELSE NULL END
我相信你想:
CASE WHEN CODE = 'ABC' AND NAME = 'XYZ' THEN 'VALUE' ELSE NULL END
你想做这样的事情吗?
(CASE when CODE = 'ABC' and NAME = 'XYZ'
THEN 'VALUE'
when code = '0' or name = '0'
then '0'
ELSE NULL
end)
或者可能是这样(基于您正在尝试从列中获取某些内容):
(CASE when CODE = 'ABC' and NAME = 'XYZ'
THEN value
when value is NULL or value = 0
then value
ELSE NULL
end)
根据你的评论,我认为这将工作:
(CASE when CODE = 'ABC' and NAME = 'XYZ'
THEN value
ELSE NULL
end)
还是:
(CASE when CODE = 'ABC' and NAME = 'XYZ' and value <> '0'
THEN 'value'
when CODE = 'ABC' and NAME = 'XYZ' and value = '0'
then '0'
ELSE NULL
end)
然而,我认为这相当于你原来嵌套的双大小写版本。