在银行、财务等对数字要求敏感的系统中,数字的显示一般有着严格的要求。
今遇到一个需求,如题,要求将数字以两位小数的格式显示,如果没有小数,则强制显示为0。
例如:
123.4 显示为 123.40
12    显示为 12.00
0     显示为 0.00

本以为这是个比较简单的问题,Oracle本身提供了to_char函数,带有格式化功能,能够满足条件:

  1. select to_char(123.4, '9999990.00') as aa from dual;
  2. select to_char(12, '9999990.00') as aa from dual;
  3. select to_char(0, '9999990.00') as aa from dual;
  4. select to_char(123.4, 'fm9999990.00') as aa from dual;
  5. select to_char(12, 'fm9999990.00') as aa from dual;
  6. select to_char(0, 'fm9999990.00') as aa from dual;

至此,本以为问题解决了,但是却没有注意到,以上的语句格式化的是字符串,而不是数字!!
需求中,很明确的要求,将数字格式化,结果仍然为数字。

分析:该需求是一个非常常见、且正常的需求,既然Oracle如此强大,应该会提供相关的方法,
于是乎,查找Oracle的相关文档,终于,找到个有个cast函数,该函数负责类型转换,尝试之。
结果显示,该方法确实可行。测试SQL语句如下:

  1. select CAST(1234.4 AS NUMBER (10, 2) ) as aa from dual ;
  2. select CAST(12 AS NUMBER (10, 2) ) as aa from dual ;
  3. select CAST(0 AS NUMBER (10, 2) ) as aa from dual ;

PS:追加一点,字符串可以直接进行类型转换,而无需使用to_number()函数做中间转换。SQL语句如下:

  1. select CAST('1234.4' AS NUMBER (10, 2) ) as aa from dual ;
  2. select CAST('12' AS NUMBER (10, 2) ) as aa from dual ;
  3. select CAST('0' AS NUMBER (10, 2) ) as aa from dual ;

PS:追加第二点,网上看到有人说,小数点后是否显示完全,PL/SQL的版本有关。
本人未做验证,不发表个人意见,仅在此记录一下,如以后遇到问题,再行验证。

Oracle数据库,数字强制显示2位小数的更多相关文章

  1. Oracle数据库,数字强制显示2位小数(转)

    Oracle数据库,数字强制显示2位小数 在银行.财务等对数字要求敏感的系统中,数字的显示一般有着严格的要求.今遇到一个需求,如题,要求将数字以两位小数的格式显示,如果没有小数,则强制显示为0.例如: ...

  2. oracle中数字保留几位小数的问题

    需求:#将数字填充到对应金额单中 select substr(b.payMoney,length(b.payMoney),1) 分, substr(b.payMoney,length(b.payMon ...

  3. Oracle数据库字段保留3位小数,程序读出来显示4位小数

    需求 项目需求从字段2位小数,改成3位小数,这事儿好办,数据库噼里啪啦敲了一行代码,发现居然报错,原因是不能修改字段精度问题,然后使用了冒泡排序,搞定 --新增临时字段 ,); --将原字段内容拷贝至 ...

  4. html模板中的数字保留两位小数

    <script> //html模板中的数字保留两位小数 function formatCurrency(num) { num = num.toString().replace(/\$|\, ...

  5. js只允许输入数字和两位小数

    一.js只允许输入数字和两位小数 //只允许输入数字和两位小数 function clearNoNum(obj) { obj.value = obj.value.replace(/[^\d.]/g, ...

  6. input只能输入数字或两位小数

    /** * [只能输入数字和两位小数] * 举例:<input type="text" onkeyup="num(this)" size="10 ...

  7. vue+element 中 el-input框 限制只能输入数字及一位小数

    仅个人经验,希望能帮到有需要的人. 第一次写 就话不多说了直接上代码. <el-input @keyup.native="proving(index)" v-model=&q ...

  8. Javascript 数字保留2位小数

    整理使用Javascript函数将数值保留两位小数: 1.num.toFixed(2) //进位 2.(Math.round(num * 100) / 100).toFixed(2) //进位 3.( ...

  9. 控制input只能输入数字和两位小数

    <input type="text" name="je" onkeyup="clearNoNum(this)" /> funct ...

随机推荐

  1. .Net Core之Swagger

    1.项目生成xml 2.添加链接文件,并将属性设值为始终复制 3.添加swagger引用:Swashbuckle.AspNetCore 4.startup.cs配置swargger的xml来源: Co ...

  2. 基于OAuth2.0的第三方认证

    浅显易懂的解释 来源 yahoo OAuth认证 原理 理解OAuth 2.0:原理.分类 一张图搞定OAuth2.0:是什么,怎么用 应用自身,完成用户认证: 缺点: 1.不同的访问Web应用提供不 ...

  3. springmvc异步上传图片并回调页面函数插入图片url代码示例

    <tr> <td class="search_td">属性值图片值:</td> <td> <input type=" ...

  4. android获取屏幕宽度和高度

    1. WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE); int wi ...

  5. 理解 Redis(4) - 关于 string 的更多命令(SETEX, SETNX, INCR, DECR, MSET...)

    上一节介绍了关于字符串值的一些基本命令, 这一节将介绍一些进阶命令: 清理终端: 127.0.0.1:6379> clear 设置一个键值对, 同时设置过期时间为10秒: 127.0.0.1:6 ...

  6. Educational Codeforces Round 23 D. Imbalanced Array 单调栈

    D. Imbalanced Array time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  7. 使用外网访问阿里云服务器ZooKeeper

    参考网址: zookeeper单机/集群安装详解 使用外网访问阿里云服务器ZooKeeper 阿里云服务管理控制台 1. 阿里云ECS安装zookeeper 环境:我安装的是zookeeper3.4. ...

  8. VS2010_DLL_共享数据段

    1.问题:写了一个DLL,自己一直测试不成功(程序A设置了 数值之后,程序B 始终读不到 读出来的都是初始化时的数值...) 具体过程: (1).DLL当初没想要用 共享数据段,测试使用 一直都是OK ...

  9. Redis与RabbitMQ作为消息队列的比较

    简要介绍 RabbitMQ RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不俗.消息中间 ...

  10. ace后台管理系统扁平化框架

    Bootstrap ACE后台管理界面模板(扁平化) 所属分类:后台模板 文件大小:1.22 MB 阅读:236697次 下载:55929次 来源:www.daimajiayuan.com 分享到:更 ...