程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle百分比格式化問題與解決方案

Oracle百分比格式化問題與解決方案

編輯:Oracle數據庫基礎

日前遇到一個問題,需要對在Oracle數據庫中查詢出來的數值進行比率的計算。類似於如下的SQL:
Select Round((discount/Amount),2) from dual;
這樣算出來的數字可以滿足絕大部分的需求。但是對於不到1的數字,問題出來了......顯示的類似於 .45樣子的數據。0.45前面的0不見了。
以下總結了兩種方法來解決缺0的問題。
第一種解決方案:
      SELECT DECODE (TRUNC (1/100),0, REPLACE (1/100, ''.'', ''0.''),TO_CHAR (1/100))
        FROM DUAL;
大家只要在1/100的地方替換成自己需要的百分數就可以了。
第二種解決方案:
SELECT RTrim(To_Char(1/100,''FM99999999990.9999''),''.'') FROM dual;
替換方式同上。


兩種方式的比較:

  • 第一種公式比較復雜,但可以處理通用的數值。
  • 第二種看起來簡單,不過格式化的值的位數一定要大於計算的位數才行。比如 SELECT RTrim(To_Char(200,''FM90.9999'') ,''.'') FROM dual; 顯示的就是########,因為超過格式化的范圍了。

不過一般來說我還是傾向於使用第二種,畢竟放寬一點就可以了^_^。
不知道誰還知道有更加好或者規范的寫法?

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved