2011-07-12 30 views
4

我無法弄清楚如何選擇如下:如何在Oracle PLSQL中將數字的小數位數擴展到最小值?

123  -> 123.00000 
123.12  -> 123.12000 
123.123456 -> 123.123456 

我想擴大小數位的數量,例如5個小數位(最小) 如果沒有小數位都應該有5個零。 如果有5個以上的小數位,那就好了。

SELECT ROUND(123,5) FROM DUAL; 

將導致:123 代替123.00000

數量都有一個默認的精度。

這是可能的,或者我應該將它轉換爲oracle number formats varchar?

我正在使用Oracle 10g和plsql。

回答

8

您可以使用下列內容:

SQL> SELECT X, to_char(X, 'fm99999999.00000999') 
    2 FROM (SELECT 123 X FROM dual UNION ALL 
    3   SELECT 123.12 FROM dual UNION ALL 
    4   SELECT 123.123456 FROM dual); 

     X TO_CHAR(X,'FM99999999.00000999 
---------- ------------------------------ 
     123 123.00000 
    123.12 123.12000 
123.123456 123.123456 
+0

如果我有像00.71這樣的十進制數,該怎麼辦?用你的方法,我會得到.71,但我想要0.71。 –

+1

@ dev.mi使用'fm99999990.00',請參閱https://docs.oracle.com/database/121/SQLRF/sql_elements004.htm#SQLRF00210 –

+0

謝謝百萬 –

0

如果要格式化數據,則必須使用to_char函數。在數值中尾隨零被截斷(它們是不相關的)。

2

你需要它,如下所示轉換爲VARCHAR:

SELECT to_char(123, '9999.99999') from dual; 
+1

正確的情緒,不正確的格式字符串。 – MatBailie

相關問題