近期在使用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;
--执行结果:

--总结:

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

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

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

--思考:

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

oracle to_Char fm 函数的更多相关文章

  1. Oracle to_char格式化函数

    转:http://www.cnblogs.com/reborter/archive/2008/11/28/1343195.html Postgres 格式化函数提供一套有效的工具用于把各种数据类型(日 ...

  2. Oracle to_char格式化函数 显示毫秒

    racle如何显示毫秒   date类型只能精确到秒,要想精确到毫秒,需要使用timestamp类型.   应用举例:   举例1:   select to_char(systimestamp,'yy ...

  3. ORACLE TO_CHAR,TO_DATE函数格式说明

    YEAR,年份的英文全称 YYYY:四位表示的年份 YYY,YY,Y:年份的最后三位.两位或一位,缺省为当前世纪 MM:01~12的月份编号 MONTH:九个字符表示的月份,右边用空格填补 MON:三 ...

  4. Oracle to_char函数的使用方法

    Oracle to_char函数的功能是将数值型或者日期型转化为字符型,下面就为您详细介绍Oracle to_char函数的使用,希望对您能有所帮助. Postgres 格式化函数提供一套有效的工具用 ...

  5. Oracle to_char()函数的使用细则

    Oracle to_char()函数的使用细则,学习连接 http://www.cnblogs.com/reborter/archive/2008/11/28/1343195.html

  6. Oracle数据库中 to_date()与to_char()函数的用法

    to_date() ,to_char()与24小时制表示法及mm分钟的显示: 一.在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用“yyyy-MM-dd HH: ...

  7. Oracle to_char的用法

    The following are number examples for the to_char function. to_char(1210.73, '9999.9') would return ...

  8. Oracle日期时间函数大全

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits ...

  9. Oracle nvl(),nvl2()函数介绍

    NVL函数 Oracle/PLSQL中的一个函数. 格式为: NVL( string1, replace_with) 功能:如果string1为NULL,则NVL函数返回replace_with的值, ...

随机推荐

  1. 用SSMS连接Azure Sql Database 与连接本地库的一些操作区别

    背景 我们知道Azure Sql Database 可以降低运维成本.是一种Pass模式,有资源弹性设置,可以自由调整资源自动对应不同业务高峰(当然也可以降低费用成本),也方便项目后期的资源扩展,以及 ...

  2. EasyNetQ使用(五)【基于主题的路由,控制队列名称】

    RabbitMQ有一个很酷的功能,基于主题的路由,这个功能允许订阅者基于多个条件去过滤消息.一个主题是由点号分隔的单词列表,随消息一同发布.例如:“stock.usd.nyse” 或 “book.uk ...

  3. MATLAB绘图及例子总结

    MATLAB绘图及例子总结 二维图 例 1 X1=[1,2,4,6,7,8,10,11,12,14,16,17,18,20]; Y1=[1,2,4,6,7,8,10,10,8,7,6,4,2,1]; ...

  4. Java工程师学习指南第8部分:分布式系统理论与实践

    本文整理了微信公众号[Java技术江湖]发表和转载过的分布式相关优质文章,想看到更多Java技术文章,就赶紧关注本公众号吧. 细聊分布式ID生成方法 近期面试Java后端的一些感悟 本专栏介绍分布式的 ...

  5. C语言双指针之盛最多水的容器

    题目描述 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中 ...

  6. ajax head带参数两次请求

    ajax请求head里带数据 客户端先发一次option看看能不能登录,然后再发一次post

  7. Reactor系列(七)flatMap映射

    #java##reactor##flatMap# 视频讲解: https://www.bilibili.com/video/av79582009/ FluxMonoTestCase.java pack ...

  8. PowerShell使用Clear-Content命令删除、清空文件内容的例子

    本文介绍PowerShell中如何将文件的内容进行删除或清空,使用VBScript要先创建FSO,然后再打开文件,再修改文件:PowerShell清空文件只要一句Clear-Content. 所谓清空 ...

  9. 快速查看表结构 SQL server查看表注释以及字段注释表结构字段说明

    DECLARE @tableName NVARCHAR(MAX);SET @tableName = N'UserIntegralExchange';   --表名!!! SELECT CASE WHE ...

  10. 常见的几种web攻击

    1. SQL注入 2. OS命令注入 3. 跨站脚本攻击(XSS) 4. HTTP首部注入 5. 会话劫持 6. 跨站点请求伪造(CSRF) 7. 点击劫持 8. DoS