oracle 顯示千分位,Oracle數據庫,數字強制顯示2位小數


在銀行、財務等對數字要求敏感的系統中,數字的顯示一般有着嚴格的要求。

今遇到一個需求,如題,要求將數字以兩位小數的格式顯示,如果沒有小數,則強制顯示為0。

例如:

123.4 顯示為 123.40

12    顯示為 12.00

0     顯示為 0.00

本以為這是個比較簡單的問題,oracle本身提供了to_char函數,帶有格式化功能,能夠滿足條件:

select to_char(1123.4, '9999990.00') as aa from dual;

select to_char(12, '9999990.00') as aa from dual;

select to_char(0, '9999990.00') as aa from dual;

select to_char(1123.4, 'fm9999990.00') as aa from dual;

select to_char(12, 'fm9999990.00') as aa from dual;

select to_char(0, 'fm9999990.00') as aa from dual;

至此,本以為問題解決了,但是卻沒有注意到,以上的語句格式化的是字符串,而不是數字!!

需求中,很明確的要求,將數字格式化,結果仍然為數字。

分析:該需求是一個非常常見、且正常的需求,既然Oracle如此強大,應該會提供相關的方法,

於是乎,查找Oracle的相關文檔,終於,找到個有個cast函數,該函數負責類型轉換,嘗試之。

結果顯示,該方法確實可行。測試SQL語句如下:

select CAST(1234.4 AS NUMBER (10, 2) ) as aa from dual ;

select CAST(12 AS NUMBER (10, 2) ) as aa from dual ;

select CAST(0 AS NUMBER (10, 2) ) as aa from dual ;

PS:追加一點,字符串可以直接進行類型轉換,而無需使用to_number()函數做中間轉換。SQL語句如下:

select CAST('1234.4' AS NUMBER (10, 2) ) as aa from dual ;

select CAST('12' AS NUMBER (10, 2) ) as aa from dual ;

select CAST('0' AS NUMBER (10, 2) ) as aa from dual ;

PS:追加第二點,網上看到有人說,小數點后是否顯示完全,PL/SQL的版本有關。

本人未做驗證,不發表個人意見,僅在此記錄一下,如以后遇到問題,再行驗證。

另外,我們在使用的時候還會有有以下容易犯的小問題

select to_char(0.413488888, ‘999,999,990.99999‘) as aa from dual;

結果:           0.41349,會自動用空格將前面精度不足的位數補齊,另外,,會使用千分位補齊

select to_char(0.413488888, ‘fm999,999,990.99999‘) as aa from dual;

結果:0.41349,結果正常

select to_char(0.413488888, ‘fm999,999,999.99999‘) as aa from dual;

結果:.41349

 

原文:http://www.cnblogs.com/huanghongbo/p/5292934.html


免責聲明!

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



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