2014-10-27 50 views
0

我想在點號後加0。 例如a = 6895
然後a = 6895.00如何在Oracle中加小數點後加零點

a的數據類型是數字(12);

我正在使用下面的代碼。

select to_char(6895,'0000.00') from dual . 

我米從上面的代碼中,但 「6895」獲得所希望的結果可以是任何number.so歸因於我需要添加「0」在上面的代碼手動。例如 。

select to_char(68955698,'00000000.00') from dual . 

任何人都可以建議我更好的方法。

+0

也許你可以改變的,以數字(12,2)或數字(14,2)的數據類型 – Nitish 2014-10-27 08:06:22

+0

也許NVL(A,0)| | '.00' – Multisync 2014-10-27 08:06:46

回答

3

number format models是將數字轉換爲字符時開始的地方。 0前綴0 s,這意味着你不得不以某種方式擺脫它們。但是,9表示:

返回值與指定的位數與前導空格,如果積極或與前導減去如果爲負。前導零是空白的,除了一個零值,它爲定點數的整數部分返回一個零。

因此,下面讓你幾乎沒有,保存爲主導的空間:

SQL> select to_char(987, '9999.00') from dual; 

TO_CHAR(
-------- 
    987.00 

然後,您需要使用format model modifierFM,這正是如此描述:

FM填充模式。 Oracle使用尾部空白字符和前導零來將格式元素填充爲恆定寬度。的寬度等於最大元素的 顯示寬度爲相關格式模型

...

的FM調節劑抑制上述填充在 TO_CHAR函數的返回值。

這給你的fm9999.00格式模型,which'll工作:

SQL> select to_char(987, 'fm9999.00') from dual; 

TO_CHAR(
-------- 
987.00 

如果小數點之前想了很多數字,然後只需添加的9份了。

1

a的數據類型是數字(12);

然後在格式模型中使用12個9。並且,將小數保持爲2.因此,由於列數據類型爲NUMBER(12),因此您不能有超過給定大小的任何數字。

SQL> WITH DATA AS(
    2 SELECT 12 num FROM dual union ALL 
    3 SELECT 234 num FROM dual UNION ALL 
    4 SELECT 9999 num FROM dual UNION ALL 
    5 SELECT 123456789 num FROM dual) 
    6 SELECT to_char(num,'999999999999D99') FROM DATA 
    7/

TO_CHAR(NUM,'999 
---------------- 
      12.00 
      234.00 
     9999.00 
    123456789.00 

SQL> 

更新關於前導空格

SQL> select ltrim(to_char(549,'999999999999.00')) from dual; 

LTRIM(TO_CHAR(54 
---------------- 
549.00 

SQL> 
+0

加入12 - 9s會改變我的數據。即。如果to_char(549,'999999999999.00')將顯示我的數據爲= _________ 549.00 「____」是空格。 – y2j 2014-10-27 09:57:53

+0

沒問題,使用'LTRIM'。查看我的更新。 – 2014-10-27 13:54:36