如何在Oracle中添加十进制后的零

时间:2014-10-27 08:00:29

标签: sql oracle

我想在数字后添加零。 例如a = 6895
那么a = 6895.00

a的数据类型是数字(12);

我正在使用以下代码。

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

我从上面的代码中获得了所需的结果但是 ' 6895'可以是任何数字。因为我需要添加' 0'在上面的代码手动。 例如。

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

任何人都可以建议我使用更好的方法。

3 个答案:

答案 0 :(得分:4)

number format models是将数字转换为字符时的起点。 0预先0,这意味着你必须以某种方式摆脱它们。但是,9表示:

  

返回具有指定位数的值,前导空格为正数或前导减去负数。前导零是空白的,除了零值,它为定点数的整数部分返回零。

所以,除了领先的空间之外,以下内容几乎可以帮助您:

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

TO_CHAR(
--------
  987.00

然后,您需要使用format model modifierFM,如下所述:

  

FM Fill模式。 Oracle使用尾随空白字符和前导零   将格式元素填充到恒定宽度。宽度等于   显示相关格式模型的最大元素的宽度

     

...

     

FM修饰符在返回值中抑制上述填充   TO_CHAR函数。

这为您提供了fm9999.00的格式模型,该模型将起作用:

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

TO_CHAR(
--------
987.00

如果您想在小数点前输入大量数字,那么只需添加大量9 s。

答案 1 :(得分: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>

答案 2 :(得分:0)

使用CASESUBSTR非常简单。

CASE WHEN SUBSTR(COLUMN_NAME,1,1) = '.' THEN '0'||COLUMN_NAME ELSE COLUMN_NAME END