开发者社区> 问答> 正文

数据库视图里要创建一个计算的字段,如何避免被除数为零:报错

数据库视图里要创建一个字段,是个除法,但被除数可能为零,我按照网上讲的CASE WHEN方法改了之后,总提示我表达式无效或缺少,我贴出来我的代码

ROUND(CASE WHEN V_RECOMMAND_CANDIDATE.vote_total > 0 THEN ((CAST(RECOMMAND_CANDIDATE_1.vote_agree AS FLOAT) / V_RECOMMAND_CANDIDATE.vote_total * 100, 2)ELSE 0 END AS Expr1)

请问这错在哪里?

展开
收起
kun坤 2020-06-12 22:03:49 642 0
1 条回答
写回答
取消 提交回答
  • CASE WHEN V_RECOMMAND_CANDIDATE.vote_total > 0 THEN 
      ROUND(
          CAST(RECOMMAND_CANDIDATE_1.vote_agree AS FLOAT) / V_RECOMMAND_CANDIDATE.vote_total * 100
         , 2) 
         ELSE 0 
     END AS Expr1



    ######谢谢######

    还有一种办法,用NULLIF处理除数,当除数为0时被改为NULL,NULL做除数返回结果也是NULL

    NULLIF(V_RECOMMAND_CANDIDATE.vote_total,0)

    不会报错,另外结果为0和NULL含义还是不同的

    2020-06-12 22:03:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载