欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle to_Char fm 函数

程序员文章站 2022-05-01 09:46:29
0表示:如果参数(double或者float类型)存在数字就显示数字,不存在数字就显示0 9表示:如果参数(double或者float类型)存在数字就显示数字,不存在数字就显示空格 FM表示:将9带来的空格删除 --总结: 1、9在不同的地方可能会使用不同的占位符:整数位使用空格;小数位有有效数时使 ......

近期在使用oracle to_char函数处理浮点数时发现有坑,这里做个小结:

网上可以找到关于to_char中使用fm9990.0099中的相关解释:
  • 0表示:如果参数(double或者float类型)存在数字就显示数字,不存在数字就显示0
  • 9表示:如果参数(double或者float类型)存在数字就显示数字,不存在数字就显示空格
  • fm表示:将9带来的空格删除

下面通过具体代码进行相关验证
--sql示例代码:




with tmp as (select 2312320.012 n from dual union all select 0.012322 n from dual union all select 0.012564 n from dual union all select -0.012 n from dual union all select -10023 n from dual union all select 8989898 n from dual) select --全部为 9 to_char(t.n, '9999999999.9999999') all_9, --全部为 9 同时使用 fm to_char(t.n, 'fm999999999999999.9999999') all_fm9, --全部为 0 to_char(t.n, '000000000.0000000') all_0, --全部为 0 同时使用 fm to_char(t.n, 'fm000000000.0000000') all_fm0, --个位开始向右使用 0 向左使用9 to_char(t.n, '9999999990.0000000') some9one0, --个位开始向右使用 0 向左使用9 同时使用fm to_char(t.n, 'fm999999999999990.00000000') some9one0p0_fm, --个位使用 0 同时使用fm to_char(t.n, 'fm999999999999990.99999999') some9one0p9_fm, --个位使用 0 前四位小数位使用 0 同时使用fm to_char(t.n, 'fm999999999999990.0000999') some9one0p09_fm from tmp t;



--执行结果:
oracle  to_Char  fm 函数

--总结:

1、9在不同的地方可能会使用不同的占位符:整数位使用空格;小数位有有效数时使用0,无有效数时使用空格;

2、9对于绝对值小于1的小数的个位会处理成空格

3、fm只能用来删除9所产生的多余的占位符(空格或0),对于0产生的占位符无效。

 

--思考:

四舍五入可以通过控制9或0的个数实现。