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