在實際工作中,出現需要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直接截斷,不會四舍無入