Oracle中计算除法,解决除数为零报错的问题及分析
作者:大大怪~将军
在Oracle数据库中,进行除法运算时,如果除数可能为零,直接使用除法运算符(/)会导致错误,解决方法是使用`DECODE()`函数来处理除数为零的情况
在Oracle数据库中,需要使用到除法,但是除数有可能为零,如果直接使用sql中的除法运算符(/),则会报错
解决方法
计算除法的语法和示例
--Oracle中计算除法语法 SELECT case WHEN(NVL(除数, 0))!=0 THEN round(被除数 / 除数,需要保留的小数位数) ELSE 0 END result FROM DUAL
例子:
SELECT
t4.NAME,
t4."总成本",
t4."营业额",
t4."利润",
CASE WHEN(NVL( t4."总成本", 0)) !=0
THEN
ROUND(t4."利润" / t4."总成本" , 2)
ELSE
0
END
"利润率"
FROM
(
WITH linshi AS (
SELECT
t2.NAME,
(t2.PUR_PRICE * t1.SALE_NUM) + t1.HUMAN_COST + t1.TRAN_COST + t1.OTH_COST AS "总成本",
t2.PRICE * t1.SALE_NUM AS "营业额"
FROM
BRAIN_BAK.TEST_DW_ITEMS_DETA t1
INNER JOIN BRAIN_BAK.TEST_DW_ITEMS_PRICE t2 ON t1.NAME = t2.NAME
) --一张临时表
SELECT
t3.NAME,
t3."总成本",
t3."营业额",
t3."营业额" - t3."总成本" AS "利润"
FROM linshi t3
) t4 ;使用 decode ()函数
decode(A.REFORM_TASK_TOTAL,0,0 , round((A.REFORM_TASK_NUM / A.REFORM_TASK_TOTAL) * 100,2 )) AS 年度改革任务整改完成率,
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
