2014-10-27 170 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