Oracle中计算除法,解决除数为零报错的问题及分析

 更新时间:2025年11月10日 08:45:21   作者:大大怪~将军  
在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 年度改革任务整改完成率,

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Oracle中serveroutput参数一次设置永久保存方法

    Oracle中serveroutput参数一次设置永久保存方法

    serveroutput是sqlplus的配置参数,而不是数据库的配置参数,每次都需要修改并保存sqlplus的配置参数,本文将介绍如何一次设置永久保存
    2012-11-11
  • oracle误drop/update操作后的数据恢复测试

    oracle误drop/update操作后的数据恢复测试

    本人主要是对drop/update数据后,在允许有时间内进行数据恢复,操作性强,比较实用。不对理论进行讲诉,需要的朋友可以参考下
    2015-08-08
  • oracle中110个常用函数介绍

    oracle中110个常用函数介绍

    这篇文章主要介绍了oracle中110个常用函数,方便大家编写出更强大的sql语句,需要的朋友可以参考下
    2013-08-08
  • Oracle一行拆分为多行方法实例

    Oracle一行拆分为多行方法实例

    工作和学习中常常会遇到一行要分割成多行数据的情况,在此整理一下做下对比,下面这篇文章主要给大家介绍了关于Oracle一行拆分为多行的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 登录oracle数据库时密码忘记的解决方法

    登录oracle数据库时密码忘记的解决方法

    登录本地oracle数据库时,忘记密码了,这种情况时有发生,下面有个不错的解决方法,希望对大家有所帮助
    2014-01-01
  • 详细聊聊Oracle表碎片对性能有多大的影响

    详细聊聊Oracle表碎片对性能有多大的影响

    当针对一个表的删除操作很多时,表会产生大量碎片,下面这篇文章主要给大家介绍了关于Oracle表碎片对性能影响的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • Oracle中的触发器(trigger)用法及解读

    Oracle中的触发器(trigger)用法及解读

    文章主要介绍了数据库触发器的概念、语法、注意事项以及基本要点,并提供了创建基于值的触发器的示例,触发器是在特定数据操作时自动执行的PL/SQL语句序列,主要用于保证数据一致性和完整性
    2026-05-05
  • oracle连接ODBC sqlserver数据源的详细步骤

    oracle连接ODBC sqlserver数据源的详细步骤

    这篇文章主要介绍了oracle连接sqlserver数据源ODBC的详细步骤,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • Oracle 外连接实现代码

    Oracle 外连接实现代码

    对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。
    2009-08-08
  • Oracle与SQL Server在企业应用的比较

    Oracle与SQL Server在企业应用的比较

    Oracle与SQL Server在企业应用的比较...
    2007-03-03

最新评论