oracle 数据保留两位小数(祥解ROUND()TRUNC(),TO

您所在的位置:网站首页 只取小数点后两位 oracle 数据保留两位小数(祥解ROUND()TRUNC(),TO

oracle 数据保留两位小数(祥解ROUND()TRUNC(),TO

2023-08-08 07:41| 来源: 网络整理| 查看: 265

在开发中经常会去进行一些计算,遇到除法经常会遇到除不尽的情况,当然各个公司要求不同,处理方式不一样,所要求精度也不一样。整理下oracle自带保留两位小数常用函数:

1 ROUND( number, [ decimal_plaes ] )

ROUND()函数是四舍五入的方法,即传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果。number 用于指定取整精度的数字;decimal_plaes 需要保留的小数位数,默认值为 0。

使用:SELECT ROUND( number, [ decimal_places ] ) FROM TABLE_NAME;注意:

1. 第一个参数必须是number,且必填;

2. 参数 decimal_places 是指在进行四舍五入运算时 , 小数的应取的位数,该参数可以不填,不填的时候,系统默认小数位数取0;

3. ROUND()函数并不会占位,小数为零则清空(有时为了数据展示的统一性,需要小数位为两位,则单此函数无法满足);

4. ROUND( number, [ decimal_places ] ),第一个参数可以为表达式。例如: select round(123.0120/1,4) num1 from dual。

2 TRUNC( number, [ decimal_plaes ] )

 

TRUNC( number, [ decimal_plaes ] )不会将number进行四舍五入;number用于指定取整精度的数字;decimal_plaes 需要保留的小数位数,默认值为 0。

使用:SELECT TRUNC( number, [ decimal_places ] ) FROM TABLE_NAME;

注意:

1. 第一个参数必须是number,且必填;

2. 参数 decimal_places 是指在进行四舍五入运算时 , 小数的应取的位数,该参数可以不填,不填的时候,系统默认小数位数取0;

3. TRUNC()函数并不会占位,小数为零则清空(有时为了数据展示的统一性,需要小数位为两位,则单此函数无法满足);

4. TRUNC( number, [ decimal_places ] ),第一个参数可以为表达式。例如: select  TRUNC(123.0120/1,4) num1 from dual;

5.trunc()函数也可以对日期进行操作。(摘录这篇博客: Oracle trunc()函数的用法) 

select trunc(sysdate) from dual --2013-01-06 今天的日期为2013-01-06 select trunc(sysdate, 'mm') from dual --2013-01-01 返回当月第一天. select trunc(sysdate,'yy') from dual --2013-01-01 返回当年第一天 select trunc(sysdate,'dd') from dual --2013-01-06 返回当前年月日 select trunc(sysdate,'yyyy') from dual --2013-01-01 返回当年第一天 select trunc(sysdate,'d') from dual --2013-01-06 (星期天)返回当前星期的第一天 select trunc(sysdate, 'hh') from dual --2013-01-06 17:00:00 当前时间为17:35 select trunc(sysdate, 'mi') from dual --2013-01-06 17:35:00 TRUNC()函数没有秒的精确 3 TO_CHAR( number, ‘格式’ )

TO_CHAR()是一个格式化函数,可以对数值进行四舍五入操作,并指定返回格式。number用于指定取整精度的数字;第二个参数是指定格式化的格式。

使用:select to_char(参数,'FM990.00') from TABLE_NAME

注意:

1. 第一个参数必须是number,且必填;

2. 第二个参数不填的时候,系统默认取当前数值;

3. to_char()函数会进行占位,不过占位是通过‘0’,‘9’进行。

0表示:如果参数(double或者float类型)存在数字就显示数字,不存在数字就显示09表示:如果参数(double或者float类型)存在数字就显示数字,不存在数字就显示空格FM表示:将9带来的空格删除

如下事例:

num1:如果只有一个参数,则默认为当前值;

num2:如果没有FM,则会根据格式,将99转化为“ ”(空格);

num3:被格式化数字小数位值为.000,格式化取格式类型末尾为9,则取最后一个零所在位;

num4:被格式化数字小数位值为.000,格式化取格式类型末尾为0,则取补充被格式化数字为末尾0所在位数;

num5:和num3相似,格式类型小数位为9,格式类型小数位没有0,则取格式化数字后不为零小数位;

num6:特殊说明,格式类型小数位为9,被格式化话数字格式化后值小数位没有非0数值,则不会展示小数位(需要注意此种情况);

num7:与num6相似,整数依旧如此,需要注意;

num8:格式化类型个位格式类型为0,则可避免num7出现情况;

num9:与num4相似,整数位最高位格式类型为0,则被格式化数字需要补充位数至格式类型0所在最高位。

如果保留两位小数则小数点后写两个99,这里的数字9代表的数字,也是一个占位符,表示该位置上以后会是一个数字,为什么小数点前面会是一个0,而不是9,是因为如果计算结果小于1,那么只会显示小数点和小数点之后的部分,前面的0会忽略掉

4. 格式化字符必须长度必须大于被格式化字符长度,否则会输出“######”。

select TO_CHAR(123.0160) num1, TO_CHAR(123.0160,'999999990.00') num2, TO_CHAR(123.1000,'FM999999990.0099') num3, TO_CHAR(123.1000,'FM999999990.09900') num4, TO_CHAR(123.1000,'FM999999990.99') num5, TO_CHAR(123.0000,'FM999999990.99') num6, TO_CHAR(000.1000,'FM999999999.99') num7, TO_CHAR(000.1000,'FM999999990.990') num8, TO_CHAR(123.0160,'FM0999999990.990') num9 from dual; select TO_CHAR(012345678910.00/1,'FM0999999990.990')numb from dual;

5. TO_CHAR() 函数也可对日期进行格式化;

oracle字符串类型的时间常用操作;

select to_char(sysdate,’yyyy-MM-dd HH24:mi:ss’) from dual;//mi是分钟 select to_char(sysdate,’yyyy-MM-dd HH24:mm:ss’) from dual;//mm会显示月份

6. TO_CHAR()其他格式化类型。摘录:Oracle中关于to_date(),to_char(),to_number()函数的用法

to_char(-0.1,’99.99’) ’ -.10’ to_char(-0.1,’FM9.99’) ‘-.1’ to_char(0.1,’0.9’) ’ 0.1’ to_char(12,’9990999.9’) ’ 0012.0’ to_char(12,’FM9990999.9’) ‘0012’ to_char(485,’999’) ’ 485’ to_char(-485,’999’) ‘-485’ to_char(485,’9 9 9’) ’ 4 8 5’ to_char(1485,’9,999’) ’ 1,485’ to_char(1485,’9G999’) ’ 1 485’ to_char(148.5,’999.999’) ’ 148.500’ to_char(148.5,’999D999’) ’ 148,500’ to_char(3148.5,’9G999D999’) ’ 3 148,500’ to_char(-485,’999S’) ‘485-’ to_char(-485,’999MI’) ‘485-’ to_char(485,’999MI’) ‘485’ to_char(485,’PL999’) ‘+485’ to_char(485,’SG999’) ‘+485’ to_char(-485,’SG999’) ‘-485’ to_char(-485,’9SG99’) ‘4-85’ to_char(-485,’999PR’) ‘’ to_char(485,’L999’) ‘DM 485 to_char(485,’RN’) ’ CDLXXXV’ to_char(485,’FMRN’) ‘CDLXXXV’ to_char(5.2,’FMRN’) V to_char(482,’999th’) ’ 482nd’ to_char(485, ‘“Good number:”999’) ‘Good number: 485’ to_char(485.8,‘“Pre-decimal:”999” Post-decimal:” .999’) ‘Pre-decimal: 485 Post-decimal: .800’ to_char(12,’99V999’) ’ 12000’ to_char(12.4,’99V999’) ’ 12400’ to_char(12.45, ‘99V9’) ’ 125’

 

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3