ORA-01476: 除數為 0


假設是a/b
decode(b,0,null,a/b) 這樣如果b為0,輸出null,不為0輸出a/b 

decode():將查詢結果翻譯成其他值,類似三目運算符

比較1個參數時      decode(column,'param','值1' ,'值2')

其中column為要選擇的table中所定義的column,

#如果column=='param',則select得到的name顯示為值1,

#如果column!='param',則select得到的name顯示為值2。

多個參數時

decode(inParam,'para1','值1' ,'para2','值2','para3','值3','para4','值4','para5','值5') name 

#如果第一個參數inParam=='para1'那么那么select得到的那么顯示為值1;

#如果第一個參數inParam=='para2'那么那么select得到的那么顯示為值2;

#如果第一個參數inParam=='para3'那么那么select得到的那么顯示為值3;

#如果第一個參數inParam=='para4'那么那么select得到的那么顯示為值4;

#如果第一個參數inParam=='para5'那么那么select得到的那么顯示為值5;

#都不相等就為''

用處

1.除數為 0

 SELECT
  trim(to_char(ROUND(decode(sum(a.QUTANTITY),0,null,sum(a.AMOUNT)/sum(a.QUTANTITY)),4))) AS CAvgPrice
        FROM
        POSITION a

2.解決Oracle的數值0.5只顯示成.5問題

SELECT decode(substr(l_num,1,1),'.','0'||l_num,l_num) FROM  DUAL;

decode(substr((to_char(b.ReportValue)),0,1),'.','0'||to_char(b.ReportValue),to_char(b.ReportValue)) as Test_Result

SELECT decode(substr(0.5,1,1),'.','0'||.5,0.5) FROM DUAL;

substr獲取該字段的 第一位,
decode判斷是否為 “  .  ”      是的話, ‘0’||字段,  拼接;  否   返回 該字段 

SELECT regexp_replace(l_num, '^\.', '0.') FROM dual  //也能實現

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM