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.11
to_char(111.11,’FM990.000’) 结果为111.110 

解释:(转自:https://blog.csdn.net/u012768459/article/details/80239937)

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

更多用法,请看:https://www.cnblogs.com/story1/p/8021623.html

你可能感兴趣的:(个人,杂谈)