嵌套的CASE表达式

时间:2018-09-28 10:35:25

标签: sql oracle

我在UI中有两个单选按钮,并且表中该单选按钮的列可以为空,在getbyid存储过程中,我首先要检查column是否为null,然后返回null,如果不为null,则检查是否为零(否)然后返回零,或者如果它是1(是)然后返回1,我想我必须为此使用嵌套的CASE语句,但无法弄清楚实际的语句,请帮忙吗?我尝试了以下方法:

CASE WHEN TMC.CUSTOMER_ID IS NOT NULL THEN(CASE TMC.CUSTOMER_ID WHEN 0 THEN 0 
                                                                ELSE 1) 
     ELSE NULL END AS CustomerId, 

3 个答案:

答案 0 :(得分:2)

CASE
  WHEN TMC.CUSTOMER_ID IS NOT NULL THEN
      CASE WHEN TMC.CUSTOMER_ID=0 THEN 0 ELSE 1 END
END   as type_pre,

答案 1 :(得分:2)

第二个END中的CASE丢失了

CASE 
  WHEN TMC.CUSTOMER_ID IS NOT NULL 
  THEN 
    CASE TMC.CUSTOMER_ID WHEN 0 THEN 0 ELSE 1 END
  ELSE NULL 
END                                                     AS CustomerId,

您可以使用SIGN功能获得相同的结果

SIGN(TMC.CUSTOMER_ID) AS CustomerId

或者如果customerId可能为负,则使用ABS和SIGN

SIGN(ABS(TMC.CUSTOMER_ID)) AS CustomerId

答案 2 :(得分:1)

使用默认值为null的Oracle函数decode

 decode( TMC.CUSTOMER_ID, 0, 0, 1, 1, null)