Oracle数据库,数字强制显示2位小数

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

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

[sql] view plain copy

  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语句如下:

[sql] view plain copy

  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语句如下:

[sql] view plain copy

  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的版本有关。
本人未做验证,不发表个人意见,仅在此记录一下,如以后遇到问题,再行验证。

时间: 2024-08-26 08:37:16

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

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

<script> //html模板中的数字保留两位小数 function formatCurrency(num) { num = num.toString().replace(/\$|\,/g,''); if(isNaN(num)) num = "0"; sign = (num == (num = Math.abs(num))); num = Math.floor(num*100+0.50000000001); cents = num%100; num = Math.flo

vue+element 中 el-input框 限制 只能输入数字及几位小数(自定义)和输入框之键盘

<!-- 下布转数 --> <el-table-column align="right" width="87px"> <template slot="header" slot-scope="scope"> <span class="sort-table-header">下布转数</span> </template> <templa

Javascript 数字保留2位小数

整理使用Javascript函数将数值保留两位小数: 1.num.toFixed(2) //进位 2.(Math.round(num * 100) / 100).toFixed(2) //进位 3.(Math.floor(num * 100) / 100).toFixed(2) //不进位 4.(Number(num.toString().match(/^\d+(?:\.\d{0,2})?/))).toFixed(2) //不进位 5.num.toPrecision(3) //进位,toPrec

JS 只能输入数字和两位小数的JS

最近项目压的喘不过气来,所以都基本不来园子了,手头还有好多事,就不扯淡了,直接上内容 JS代码: 1 function clearNoNum(value){ 2 //清除"数字"和"."以外的字符 3 value = value.replace(/[^\d.]/g,""); 4 5 //验证第一个字符是数字而不是 6 value = value.replace(/^\./g,""); 7 8 //只保留第一个. 清除多余的 9

数字保留2位小数

1.toFixed(num) 方法可把 Number 四舍五入为指定小数位数的数字.(num可取0-20,包括0.20) <script> var a=3.141592653; console.log(a.toFixed(2)); //3.14 </script> 2.js方法 var a=3.141592653; function fun(x) { var f = parseFloat(x); if (isNaN(f)) { return; } f = Math.round(x*

js-格式化数字保留两位小数-带千分符

很多时候发现有时候js会提示自带函数不能使用,所以自己找了很多资料实现了个 html <input type="text" class="input_text input_number" name="mgsy_dbnfjlr" value="" onblur="this.value=fouces_qfh(this.value)" /> js函数 function fouces_qfh(obj){

js 格式化数字保留2位小数

function toDecimal2(x) { var f = parseFloat(x); if (isNaN(f)) { return false; } var f = Math.round(x*100)/100; var s = f.toString(); var rs = s.indexOf('.'); if (rs < 0) { rs = s.length; s += '.'; } while (s.length <= rs + 2) { s += '0'; } return s;

java数字保留两位小数四舍五入

import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class format { double f = 111231.5585; public void m1() { BigDecimal bg = new BigDecimal(f); double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubl

ArcGIS 10.2 链接64位Oracle数据库

来自:https://blog.csdn.net/LoveCarpenter/article/details/59544858#21-至今为止32位客户端已经安装完毕了 引言 安装Oracle32位客户端 1 至今为止32位客户端已经安装完毕了 ArcGIS连接Oracle数据库 1.引言 在某些需求下我们需要将空间数据存入数据库中,在公司中使用Oracle数据库还是比较多的,但是当大家想要利用ArcGIS链接Oracle数据库时会碰到各种各样的问题,对于新手来说,使用ArcGIS链接Oracl