我想在数字后添加零。
例如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 .
任何人都可以建议我使用更好的方法。
答案 0 :(得分:4)
number format models是将数字转换为字符时的起点。 0
预先0
,这意味着你必须以某种方式摆脱它们。但是,9
表示:
返回具有指定位数的值,前导空格为正数或前导减去负数。前导零是空白的,除了零值,它为定点数的整数部分返回零。
所以,除了领先的空间之外,以下内容几乎可以帮助您:
SQL> select to_char(987, '9999.00') from dual;
TO_CHAR(
--------
987.00
然后,您需要使用format model modifier,FM
,如下所述:
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)
使用CASE
和SUBSTR
非常简单。
CASE WHEN SUBSTR(COLUMN_NAME,1,1) = '.' THEN '0'||COLUMN_NAME ELSE COLUMN_NAME END