Oracle中有效小數處理

在實際工作中,出現需要sql的查詢結果中保留特定的小數位的情況,以下是在開發中用到過的幾種方式,這些方式各有優劣,視具體需求而定:

測試環境:oracle 10g


方法一:保留2位小數不夠補0

 

select to_char(123456789.9,'999999999.00') from dual

 

結果:

 

 123456789.90

 

  • 以上方法當值爲零是會顯示 .00而不是 0.00,可以使用decode簡單處理

          select decode(0,0,'0.00',trim(to_char(0.00000,'99999999999999.99'))) FROM dual;

  • 該方法測試後,發現會在結果前出現空格,所以建議加上trim
  • 該方法侷限爲,前面的數字的整數位應小於等於後面的整數位

 

方法二: 


select to_char(123456789.1234,rpad('999999999.',11,'0'))  from dual

 

結果:

 

 123456789.12

 

  • 該方法測試後,發現會在結果前出現空格,所以建議加上trim

 

 方法三:

 

select round(1234.45,1) from dual

 

結果:

 

1234.5

 

  • round會四捨五入,但是當原數值沒有小數位時不會補充小數位

 

 方法四:

 

select trunc(1234.45678,3) from dual

 

結果:

 

1234.456

 

  • trunc直接截斷,不會四舍無入


可能是因爲本人技術不精,感覺使用oracle做有效位數的處理不是十分靈活,如果不是功能需要,建議還是放在後臺代碼或者前端腳本中處理更好些。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章