因為工作需要要寫一個保留小數點的方法或SQL語句,number類型的小數,如果是0.5或-0.5,列印的時候就會顯示成.5或-.5,顯然不是我想要的,自己就簡單的寫了一個,功能可以實現了,效率不高,高手們多多指教。
- DECLARE
- NUM1 NUMBER := 1/4; -- 要進行舍入的數字
- NUM2 NUMBER; -- 中間變數
- IND NUMBER; -- 小數點位置
- PARAM NUMBER := 3; --精度,保留的小數位元,由於number精度限制,最大精度為38位
- RESULT VARCHAR2(10000);
-
- BEGIN
- NUM2 := ROUND(NUM1, PARAM); -- 對入參數字按照精度進行四捨五入
- IND := INSTR(NUM2, '.'); -- 獲得‘.’的位置
- RESULT := NUM2;
- IF IND = 0 THEN -- 沒有找到小數點,說明是整數
- RESULT := RESULT || '.'; -- 在後面補個小數點
- RESULT := RPAD(RESULT, LENGTH(RESULT) + PARAM, '0'); -- 按照精度對結果進行補0操作
- ELSE -- 找到小數點
- -- 小數的時候
- IF NUM2 < 1 THEN
- -- 小於1的小數,要對小於1的小數進行首位補零
- IF NUM2 > 0 THEN
- RESULT := '0' || NUM2;
- ELSIF (-1 < NUM2 AND NUM2 < 0) THEN
- RESULT := '-0' || SUBSTR(RESULT, IND);
- ELSE
- RESULT := NUM2;
- END IF;
- END IF;
- IND := INSTR(RESULT, '.');
- RESULT := RPAD(RESULT, IND + PARAM, '0');
- END IF;
- DBMS_OUTPUT.put_line(RESULT);
- END;
- /
更多Oracle相關資訊見Oracle 專題頁面 http://www.bkjia.com/topicnews.aspx?tid=12