Oracle to_char函数的数字格式具有任意精度和一定的比例

时间:2012-02-10 09:43:40

标签: oracle rounding number-formatting

这个很简单但实际上我找不到任何有用的东西。

在我的SQL查询中,我有一些带有单个刻度值的舍入数字 - round(number,1)。如果数字四舍五入到某个十进制数字,则以“9,9”格式打印。

另一方面,如果数字四舍五入为整数,则只打印逗号后没有零的整数值,尽管我希望我的查询选择“9,9”格式的数字,即使十进制数字为零。

简而言之,我认为我需要类似的例子

to_char((select round(121.01,1), from dual), '*,1') ;输出121,0

最好的方法是什么?提前致谢

Korhan

3 个答案:

答案 0 :(得分:3)

您所要做的就是在to_char中指定所需的小数点数。使用格式掩码的问题是您需要在小数点前指定所需的数字。

SQL> select to_char(round(121.01,1),'999.9') from dual;

TO_CHA
------
 121.0

SQL> select to_char(round(121.4,1),'999.9') from dual;

TO_CHA
------
 121.4

SQL> select to_char(round(121,1),'999.9') from dual;

TO_CHA
------
 121.0

SQL> select to_char(round(5121,1),'999.9') from dual;

TO_CHA
------
######

SQL>

还有其他一些formatting options

答案 1 :(得分:2)

对小数位使用 0 而不是 9

SELECT TO_CHAR( ROUND( 121.01, 1 ), '990D0' ) num FROM DUAL;

NUM  
------
121.0

答案 2 :(得分:2)

这个简单的查询可以帮到你,

select to_char(round(121.01,1), '999.0') from dual;

to_char 功能中:

9 - 表示在输出中阻止/隐藏零。

0 - 表示在小数点之前/之后的任何位置输出中显示零。

注意:

没有。小数点前后的' 9/0'是小数点后想要显示的位数。