Oracle資料庫,數字強制顯示2位小數

來源:互聯網
上載者:User

標籤:函數   轉換   完全   rac   plain   char   cas   字串   中間   

在銀行、財務等對數字要求敏感的系統中,數位顯示一般有著嚴格的要求。
今遇到一個需求,如題,要求將數字以兩位小數的格式顯示,如果沒有小數,則強制顯示為0。
例如:
123.4 顯示為 123.40
12    顯示為 12.00
0     顯示為 0.00


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

 

[sql]  
  1. select to_char(123.4, ‘9999990.00‘) as aa from dual;  
  2. select to_char(12, ‘9999990.00‘) as aa from dual;  
  3. select to_char(0, ‘9999990.00‘) as aa from dual;  
  4.   
  5. select to_char(123.4, ‘fm9999990.00‘) as aa from dual;  
  6. select to_char(12, ‘fm9999990.00‘) as aa from dual;  
  7. select to_char(0, ‘fm9999990.00‘) as aa from dual;  

 

至此,本以為問題解決了,但是卻沒有注意到,以上的語句格式化的是字串,而不是數字!!
需求中,很明確的要求,將數字格式化,結果仍然為數字。


分析:該需求是一個非常常見、且正常的需求,既然Oracle如此強大,應該會提供相關的方法,
於是乎,尋找Oracle的相關文檔,終於,找到個有個cast函數,該函數負責類型轉換,嘗試之。
結果顯示,該方法確實可行。測試SQL語句如下:

[sql] 
 
  1. select CAST(1234.4 AS NUMBER (10, 2) ) as aa from dual ;  
  2. select CAST(12 AS NUMBER (10, 2) ) as aa from dual ;  
  3. select CAST(0 AS NUMBER (10, 2) ) as aa from dual ;  

 

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

 

[sql] 
 
  1. select CAST(‘1234.4‘ AS NUMBER (10, 2) ) as aa from dual ;  
  2. select CAST(‘12‘ AS NUMBER (10, 2) ) as aa from dual ;  
  3. select CAST(‘0‘ AS NUMBER (10, 2) ) as aa from dual ;  


PS:追加第二點,網上看到有人說,小數點後是否顯示完全,PL/SQL的版本有關。
本人未做驗證,不發表個人意見,僅在此記錄一下,如以後遇到問題,再行驗證

Oracle資料庫,數字強制顯示2位小數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.