使用SQL的大小写句子



我使用双大小写句子根据同一表中其他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前加上字段名要灵活得多。

你想做这样的事情吗?

(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)

然而,我认为这相当于你原来嵌套的双大小写版本。