Oracle中計算除法,解決除數(shù)為零報錯的問題及分析
更新時間:2025年11月10日 08:45:21 作者:大大怪~將軍
在Oracle數(shù)據(jù)庫中,進行除法運算時,如果除數(shù)可能為零,直接使用除法運算符(/)會導(dǎo)致錯誤,解決方法是使用`DECODE()`函數(shù)來處理除數(shù)為零的情況
在Oracle數(shù)據(jù)庫中,需要使用到除法,但是除數(shù)有可能為零,如果直接使用sql中的除法運算符(/),則會報錯
解決方法
計算除法的語法和示例
--Oracle中計算除法語法 SELECT case WHEN(NVL(除數(shù), 0))!=0 THEN round(被除數(shù) / 除數(shù),需要保留的小數(shù)位數(shù)) ELSE 0 END result FROM DUAL
例子:
SELECT
t4.NAME,
t4."總成本",
t4."營業(yè)額",
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 "營業(yè)額"
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."營業(yè)額",
t3."營業(yè)額" - t3."總成本" AS "利潤"
FROM linshi t3
) t4 ;使用 decode ()函數(shù)
decode(A.REFORM_TASK_TOTAL,0,0 , round((A.REFORM_TASK_NUM / A.REFORM_TASK_TOTAL) * 100,2 )) AS 年度改革任務(wù)整改完成率,
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Oracle中serveroutput參數(shù)一次設(shè)置永久保存方法
serveroutput是sqlplus的配置參數(shù),而不是數(shù)據(jù)庫的配置參數(shù),每次都需要修改并保存sqlplus的配置參數(shù),本文將介紹如何一次設(shè)置永久保存2012-11-11
oracle誤drop/update操作后的數(shù)據(jù)恢復(fù)測試
本人主要是對drop/update數(shù)據(jù)后,在允許有時間內(nèi)進行數(shù)據(jù)恢復(fù),操作性強,比較實用。不對理論進行講訴,需要的朋友可以參考下2015-08-08
登錄oracle數(shù)據(jù)庫時密碼忘記的解決方法
登錄本地oracle數(shù)據(jù)庫時,忘記密碼了,這種情況時有發(fā)生,下面有個不錯的解決方法,希望對大家有所幫助2014-01-01
oracle連接ODBC sqlserver數(shù)據(jù)源的詳細步驟
這篇文章主要介紹了oracle連接sqlserver數(shù)據(jù)源ODBC的詳細步驟,本文分步驟給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-07-07
Oracle與SQL Server在企業(yè)應(yīng)用的比較
Oracle與SQL Server在企業(yè)應(yīng)用的比較...2007-03-03

