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

最新文章

  1. 【干货分享】流程DEMO-采购预算编制
  2. JAVA面试题1
  3. Matlab的标记分水岭分割算法
  4. 如何整合最新的Flex sdk和Air sdk。
  5. ligerui_ligerTree_004_对"ligerTree"节点操作
  6. linux mount (挂载命令)详解
  7. makefile中的target到底代表什么?
  8. python del函数
  9. 性能测试分享:Jmeter的api监控工具解决方案
  10. 30分钟掌握 C#7
  11. AngularJS 动画总结
  12. hdu5444(模拟)
  13. mysql服务无法正常启动
  14. MyBatis探究-----为实体类Bean取别名,配置typeAliases
  15. 关于Struts2中 Action 配置method的解读
  16. session(概念、session对象的获取、删除、验证)
  17. 通过shell查找访问日志中访问量最大的ip
  18. Go Example--结构体
  19. Scala深入浅出实战经典:29,Case class和Case object代码实战解析
  20. elasticsearch5.5安装

热门文章

  1. XAMPP【phpmyadmin】外网访问被拒绝解决办法
  2. 如何访问 Redis 中的海量数据,服务才不会挂掉?
  3. python 字典(dictionary)一些方法
  4. rabbitmq-5-案例1-简单的案例
  5. 50.Maximal Square(最大正方形)
  6. firmware
  7. 【转】 linux下配置squid 服务器,最简单使用方式
  8. picker多级选择器的使用————小程序
  9. Nginx 实现 Rewrite 跳转
  10. mysql基于GTIDS复制