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. FFT&NTT数学解释

    FFT和NTT真是噩梦呢 既然被FFT和NTT坑够了,坑一下其他的人也未尝不可呢 前置知识 多项式基础知识 矩阵基础知识(之后会一直用矩阵表达) FFT:复数基础知识 NTT:模运算基础知识 单位根介 ...

  2. Bootstrap+Ajax+HTML 动态表格分页

      1.HTML页面:(bootstrap的模态框) 触发模态框: <div class="col-lg-6"> <div class="input-g ...

  3. BootStrap自定义轮播图播放速度

    $('.carousel').carousel({      interval: 3000 });

  4. python 自动把mysql备份文件发送邮箱

    import os import time import sched import smtplib from email.mime.text import MIMEText from email.he ...

  5. fiddler如何抓取https接口

    1.Fiddler工作原理:    Fiddler 是以代理 web 服务器的形式工作的,它使用代理地址:127.0.0.1端口:8888. 当 Fiddler 退出的时候它会自动注销,这样就不会影响 ...

  6. centos 7.2 离线安装 gcc

    1.查看有没有挂载 centos 7.2 的镜像源文件 2.如果没有就通过服务端挂载 如果不知怎么挂载,就解压CentOS-7-x86_64-DVD-1511.iso 镜像文件,在Packages找到 ...

  7. box2d——1.tiles瓦片积木

    [调试渲染]   将TestCpp里Box2DTestBed的GLES-Render.h/cpp加入到项目中.声明绘制变量:GLESDebugDrawmDebugDraw. [创建世界]   // 依 ...

  8. HTML学习笔记(基础部分)

    一.基本概念 1.HTML:超文本标记语言(HyperText Markup Language)是一种用于创建网页的标准标记语言. 2.HTML文档的后缀名:.html 或 .htm 3.标签:由尖括 ...

  9. shell巡检草拟

    #!/bin/bash phy_cpu=$(cat /proc/cpuinfo | grep "physical id"|sort | uniq | wc -l) logic_cp ...

  10. 树莓派上安装boost库

    一.安装boost库 sudo apt-get install libboost-dev aptitude search boost 二.编写测试代码 #include <iostream> ...