1. 程式人生 > >oracle:sql保留兩位小數方法

oracle:sql保留兩位小數方法

1.select cast(362315*1.0/10000 as numeric(18,2))

2.select convert(decimal(18, 2), 362315 * 1.0 / 10000)

3.ROUND(count(aa) / count(t.bb),4 )*100

解釋:

SELECT ROUND(column_name,decimals) FROM table_name;

引數 描述
column_name 必需。要舍入的欄位。
decimals 必需。規定要返回的小數位數。

SQL ROUND() 例項

ROUND(X): 返回引數X的四捨五入的一個整數。

mysql> select ROUND(-1.23);         -> -1 mysql> select ROUND(-1.58);         -> -2 mysql> select ROUND(1.58);         -> 2

ROUND(X,D): 返回引數X的四捨五入的有 D 位小數的一個數字。如果D為0,結果將沒有小數點或小數部分。

mysql> select ROUND(1.298, 1);         -> 1.3 mysql> select ROUND(1.298, 0);         -> 1

注意:ROUND 返回值被變換為一個BIGINT!

4.to_char(ROUND(r.aa,2) ,'fm999990.00' )

注意事項: 9代表存在數字則顯示數字,沒有則顯示空格; 0代表存在數字則顯示數字,沒有則顯示0; FM 刪除9產生的空格; 另外,’.’後面多出的9或0均會補0 如to_char(111.11,’FM990.00’) 結果為111.11 to_char(111.11,’FM990.009’) 結果為111.110 to_char(111.11,’FM990.000’) 結果為111.110 

to_char 中fm  1,有9的地方如果有數字就顯示如果沒有數字就不顯示,有0的地方在沒有數字的時候也會有0來佔位 select to_char(9999.09556,'fm99999.0900'),to_char(9999.09556,'fm00099.0900') from dual    結果為: 9999.0956  /09999.0956

 2,擷取小數的時候是四捨五入

select to_char(90.99,'fm999.0')保留一位小數,to_char(90.99,'fm999.00')保留2位小數 from dual     結果為:91.0/90.99 3,如果用fm9.99 整數仍然會顯示.,如果不需要需要替換 select to_char(9,'fm99.99'),regexp_replace(to_char(9,'fm99.99'), '\.$', '') from dual     結果為:9./9 4,fm中整數部分需大於等於值的整數部分長度 select to_char(99999.09, 'fm9.09'),        to_char(99999.09, 'fm99.09'),        to_char(99999.09, 'fm999.09'),        to_char(99999.09, 'fm9999.09'),        to_char(99999.09, 'fm99999.00')   from dual    結果為:

   #####/######/#######/########/99999.09

select to_char(99999.09, 'fm0.09'),        to_char(99999.09, 'fm00.09'),        to_char(99999.09, 'fm000.09'),        to_char(99999.09, 'fm0000.09'),        to_char(99999.09, 'fm00000.00')   from dual    結果為:    #####/######/#######/########/99999.09