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

Oracle to_char函数,具有任意精度和一定比例的数字格式,oracle,rounding,number-formatting,Oracle,Rounding,Number Formatting,这个其实很简单,但我找不到任何有用的东西 在我的SQL查询中,我有一些四舍五入的数字,带有一个单刻度值——roundnumber,1。如果数字四舍五入到某个十进制数字,则以“9,9”格式打印 另一方面,如果数字四舍五入为整数,则仅打印逗号后不带零的整数值,尽管我希望查询选择“9,9”格式的数字,即使十进制数字为零 简言之,我想我需要像这样的东西 至_char121.01,1,从双“*,1”中选择;输出121,0 最好的方法是什么?提前谢谢 Korhan您所要做的就是指定要在to_char中使用的

这个其实很简单,但我找不到任何有用的东西

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

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

简言之,我想我需要像这样的东西

至_char121.01,1,从双“*,1”中选择;输出121,0

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


Korhan

您所要做的就是指定要在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>
还有许多其他的方法。

使用0代替9作为小数点:

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

NUM  
------
121.0

这个简单的查询可能会帮助您

select to_char(round(121.01,1), '999.0') from dual;
在to_char函数中:

9-指示在输出中阻塞/隐藏零

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

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>
注:


小数点前/后的“9/0”数是要在小数点前/后显示的位数。

如果要以任意精度但精确的固定比例显示数字,可以使用此格式掩码:“FM9G999G999G999G990D0”甚至更长。
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>