日前遇到一個問題,需要對在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;
替換方式同上。
兩種方式的比較:
不過一般來說我還是傾向於使用第二種,畢竟放寬一點就可以了^_^。
不知道誰還知道有更加好或者規范的寫法?