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.bkjia.com/topicnews.aspx?tid=12

相关内容