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. smartforms 字段文本碰见 "-" 自动换行

    长文本会在 '-' 这个符号处自动换行 原理:SAP 标准SMARTFORMS 的功能,遇到 '-' 自动判断后面字段是否能在本行完全显示,不够则换行 注意:如果一行文本有多个 ‘-’ ,则 判断 ' ...

  2. sublime text3中使用PHP编译系统

    前言: php是服务器端语言,我们平时写的php代码想要查看运行结果的话,通常会搭建web服务器,然后通过浏览器访问.而对于有时候一些简单的测试代码来说,此过程就有点繁琐了.编译系统的好处是,可以让我 ...

  3. A Bite Of React(1)

    react: component and views : produce html abd add them on a page( in the dom) <import React from ...

  4. Spring Boot & Redis 用起来真简单!

    作者:java_老男孩  https://blog.51cto.com/14230003/2368721 Redis 是目前业界使用最广泛的内存数据存储.相比 Memcached,Redis 支持更丰 ...

  5. 组件化框架设计之apt编译时期自动生成代码&动态类加载(二)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 本篇文章将继续从以下两个内容来介绍组件化框架设计: apt编译时 ...

  6. luoguP3258 [JLOI2014]松鼠的新家 题解(树上差分)

    P3258 [JLOI2014]松鼠的新家  题目 树上差分:树上差分总结 #include<iostream> #include<cstdlib> #include<c ...

  7. 64.Find the Duplicate Number(发现重复数字)

    Level:   Medium 题目描述: Given an array nums containing n + 1 integers where each integer is between 1 ...

  8. 使用python开启你的opencv之旅---图像的读入,存储

    python的便捷是如此的引人着迷,而opencv给python提供的接口使我们能够使用python来快速验证我们的想法,或者与别的模块快速结合,在这个系列文章我会通过jupyter notebook ...

  9. http请求访问响应慢问题解决的基本思路

    第一步,检查网络 ping命令检查网络域名解析是否正常,ping服务器的延迟是否过大,如果过大可以检查Ip是否冲突,或者交换机网线是否正常插好,通过nmon还可以查看网络流量,一般用的千兆交换机理论速 ...

  10. (PASS)JAVA数组去重 三种方法 (不用集合)

    第一种方法(只学到数组的看): 定义一个新的数组长度和旧数组的长度一样,存储除去重复数据的旧数组的数据和0, package demo01; import java.sql.Array; import ...