1.问题起源 
      oracle 数据库字段值为小于1的小数时,使用char类型处理,会丢失小数点前面的0 
      例如0.35就变成了.35 
2.解决办法:用to_char函数格式化数字显示 
      select     to_char(0.338,'fm9999999990.00') from dual; 
     结果:0.34 
     这里重点要看 fm9999999999.99,表示整数部分最多10位,小数部分2位,fm表示去 掉转位字符串后前面的空格,不加fm,0.34前面会有空格的.

3.with的使用 
WITH TMP1 AS ( 
     SELECT 1 AS A, 2 AS B FROM DUAL 
     UNION 
     SELECT 1 AS A, 3 AS B FROM DUAL 
     UNION 
     SELECT 1 AS A, 4 AS B FROM DUAL 
), 
TMP2 AS ( 
     SELECT 1 AS A, 2 AS B FROM DUAL 
     UNION 
     SELECT 1 AS A, 3 AS B FROM DUAL 
     UNION 
     SELECT 2 AS A, 4 AS B FROM DUAL 

SELECT TMP1.*,TMP2.* 
FROM TMP1 JOIN TMP2 
ON TMP1.A = TMP2.A

作者“努力向前”

经过测试,怀疑是number转为char时,舍去了小数点前面的0

  1. SQL> select to_char(num,'999999999.999999999') from ml_test;
  2. TO_CHAR(NUM,'999999999.9999999
  3. ------------------------------
  4. .421240000
  5. .421246543
  6. 65432.421243240
  7. 4.621240000
  8. SQL> select to_char(num) from ml_test;
  9. TO_CHAR(NUM)
  10. ----------------------------------------
  11. .42124
  12. .4212465434
  13. 65432.42124324
  14. 4.62124
  15. SQL> select to_char(0.99) from dual;
  16. TO_CHAR(0.99)
  17. -------------
  18. .99

--4.怎么解决,解决方案如下

(1)

  1. SQL>  select to_nmber(to_char(0.99)) from dual;
  2. TO_NUMBER(TO_CHAR(0.99))
  3. ------------------------
  4. 0.99
  5. SQL>  select to_char(num,'fm999999990.999999999') from ml_test;
  6. TO_CHAR(NUM,'FM999999990.99999
  7. ------------------------------
  8. 0.42124
  9. 0.421246543
  10. 65432.42124324
  11. 4.62124

(2)使用case when 或 decode函数,取第一位是否为".", 补0 ,就ok了

    1. SQL> select to_char(num,'999999999.999999999') from ml_test;
    2. TO_CHAR(NUM,'999999999.9999999
    3. ------------------------------
    4. .421240000
    5. .421246543
    6. 65432.421243240
    7. 4.621240000
    8. SQL> select to_char(num) from ml_test;
    9. TO_CHAR(NUM)
    10. ----------------------------------------
    11. .42124
    12. .4212465434
    13. 65432.42124324
    14. 4.62124
    15. SQL> select to_char(0.99) from dual;
    16. TO_CHAR(0.99)
    17. -------------
    18. .99

oracle查询不显示小数点前的0的更多相关文章

  1. bc显示小数点前的0

    bc是强大而常用的计算工具.不过在除法运算时,如果得到的结果值小于1,得到的小数前面的0不存.本篇提供几个常用小数点前缺0的解决方法. [root@maqing ~]# bc bc Copyright ...

  2. Datagridview中数字格式列 不显示小数点前面的0

    用代码设置DataGridView中某列为数字格式,但当小数为0.*的时候,前面的0却不显示.只显示.*. 看网上有说: 调整本地设置,控制面板-区域和语言选项,在弹出框的区域选项卡中,选择自定义,在 ...

  3. oracle 绝对值小于1的数值显示小数点前面的0

    SELECT DECODE(TRUNC(-.98),0,REPLACE(TO_CHAR(-.98), '.', '0.'),TO_CHAR(-.98))FROM DUAL;

  4. 注意SSIS中的DT_NUMERIC类型转换为字符类型(比如DT_WSTR)时,会截断小数点前的0

    我们知道SSIS中有许多数据类型,如下图所示: 但是DT_NUMERIC这个类型有个陷进要注意,我们来做个实验,随便定义一个String类型的SSIS包变量,然后打开该变量表达式窗口: 在变量表达式窗 ...

  5. Oracle查询使用空间比较大的前15个表

    -- 查询使用空间比较大的前15个表 select a.* from( ,2) all_size from dba_segments where SEGMENT_TYPE='TABLE' order ...

  6. 【oracle查询】oracle查询字段显示#号 (井号)

    客户反映字段查询为井号,我自己没有遇到这种情况,于是上网百度了一下. 下面的答案很好地解决了问题,哈哈哈.

  7. oracle查询排序后的前几条记录

    select * from (select * from table order by 字段名 desc) where rownum<你要查的记录条数,这样才能符合条件.

  8. oracle查询当前系统时间前10天的数据

    select * from eo_c_order t where t.create_time>systimestamp-interval'1'day; 转载于:https://www.cnblo ...

  9. oracle小数点前零丢失的问题

    1.问题起源        oracle  数据库 字段值为小于1的小数时,使用char类型处理,会丢失小数点前面的0        例如0.2就变成了.2 2.解决办法: (1)用to_char函数 ...

随机推荐

  1. excel vlookup的使用

    表1 姓名 部门 ***   ***   ***   ***   表2 姓名 部门 ***  *** *** ***  *** ***  *** ***  找表2的姓名对应部门,粘贴在表1中 vloo ...

  2. (转)关于SimpleDateFormat安全的时间格式化线程安全问题

    想必大家对SimpleDateFormat并不陌生.SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调 ...

  3. css浮动以及清除

    首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为d ...

  4. 解决:python安装mysqldb模块报 EnvironmentError: mysql_config not found

    最近学习python操作mysql需要安装mysqldb模块 出现EnvironmentError: mysql_config not found 经网上查看,需要安装mysql客户端开发库libmy ...

  5. springboot 项目启动脚本

    springboot项目启动可通过下面的shell脚本启动. startup.sh app=order-service-rest.jar appout=logs/${app/.jar/.out} ap ...

  6. go语言从例子开始之Example18.struct结构体

    Go 的结构体 是各个字段字段的类型的集合.这在组织数据时非常有用 Example: package main import "fmt" type product struct{ ...

  7. sigmoid 和 soft-max总结

    1)sigmoid函数(也叫逻辑斯谛函数):  引用wiki百科的定义: A logistic function or logistic curve is a common “S” shape (si ...

  8. react 使用axios

    1.配置axios代理  使得axios  可以不写根路径 package.json "proxy":"http://localhost:4000", 2.使用 ...

  9. maven打包出现 Error assembling JAR: java.lang.reflect.InvocationTargetException

    如果项目的包名使用中文,会反射找不到,idea设置Editor->File Encodings 改utf-8试试

  10. Cesium截图功能

    首先安装  canvas2image npm intsall canvas2image --save 因为项目基于vue,所以需要在canvas2image的最后面 加上 export default ...