Welcome 微信登录

首页 / 数据库 / MySQL / Oracle数据显示保留小数点的问题

因为工作需要要写一个保留小数点的方法或SQL语句,number类型的小数,如果是0.5或-0.5,打印的时候就会显示成.5或-.5,显然不是我想要的,自己就简单的写了一个,功能可以实现了,效率不高,高手们多多指教。
  1. DECLARE   
  2.   NUM1   NUMBER := 1/4; -- 要进行舍入的数字   
  3.   NUM2   NUMBER; -- 中间变量   
  4.   IND    NUMBER; -- 小数点位置   
  5.   PARAM  NUMBER := 3; --精度,保留的小数位数,由于number精度限制,最大精度为38位   
  6.   RESULT VARCHAR2(10000);   
  7.   
  8. BEGIN   
  9.   NUM2   := ROUND(NUM1, PARAM); -- 对入参数字按照精度进行四舍五入   
  10.   IND    := INSTR(NUM2, ".");   -- 获得‘.’的位置   
  11.   RESULT := NUM2;                  
  12.   IF IND = 0 THEN               -- 没有找到小数点,说明是整数   
  13.     RESULT := RESULT || ".";    -- 在后面补个小数点   
  14.     RESULT := RPAD(RESULT, LENGTH(RESULT) + PARAM, "0"); -- 按照精度对结果进行补0操作   
  15.   ELSE                          -- 找到小数点   
  16.     -- 小数的时候   
  17.     IF NUM2 < 1 THEN                
  18.       -- 小于1的小数,要对小于1的小数进行首位补零   
  19.       IF NUM2 > 0 THEN   
  20.         RESULT := "0" || NUM2;   
  21.       ELSIF (-1 < NUM2 AND NUM2 < 0) THEN   
  22.         RESULT := "-0" || SUBSTR(RESULT, IND);   
  23.       ELSE   
  24.         RESULT := NUM2;   
  25.       END IF;   
  26.     END IF;   
  27.     IND    := INSTR(RESULT, ".");   
  28.     RESULT := RPAD(RESULT, IND + PARAM, "0");   
  29.   END IF;   
  30.   DBMS_OUTPUT.put_line(RESULT);   
  31. END;   
  32. /  
更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle 11g 中的SCN多长时间增加一次Oracle 10g用ASH生成性能报告相关资讯      Oracle数据库入门教程 
  • 从Oracle817导入到Oracle10.2.0.4  (10/06/2012 10:51:17)
  • Oracle出现“TNS: 监听程序无法分  (10/05/2012 11:50:50)
  • Oracle中强行断开用户连接的方法  (10/04/2012 21:01:35)
  • Oracle入门教程之数据库实例管理  (10/05/2012 11:53:50)
  • ORA-12519: TNS:no appropriate   (10/05/2012 11:43:50)
  • Oracle 数据库入门教程 PPT  (06/09/2012 14:38:16)
本文评论 查看全部评论 (0)
表情: 姓名: 字数