为什么oracle不显示小数的整数部分

时间:2015-09-09 15:31:23

标签: oracle

当我执行下一个SQL时:

从双重选择1/3;

结果是,333333333 但我预期的结果是0,333333333

为什么没有oracle显示零?有没有可以影响它的参数? 感谢

编辑:我从使用oo4o(oracle对象为ole)的应用程序中检查了这种行为,并使用sqlDeveloper确认(当我用F5执行sql时,不使用ctrl + intro)。真正的问题在于oo4o Dynaset对象:当我尝试对两个字段的值求和时,得到的是连接,而不是总和:balance 我想知道的是,如果有一些参数或配置使oracle引擎返回没有零的数字,所以我可以打开| off以返回de zero作为整数部分。

1 个答案:

答案 0 :(得分:3)

SQL * Plus默认会显示(使用您所在地区的小数点分隔符):

SQL> select 1/3 from dual;

       1/3
----------
.333333333

您可以使用set numformat更改行为:

SQL> set numformat "0D9999"
SQL> select 1/3 from dual;

    1/3
-------
 0.3333

...其中D代表小数点分隔符。或者您可以使用列格式,列别名:

SQL> set numformat ""
SQL> column answer format 0.000
SQL> select 1/3 as answer from dual;

ANSWER
------
 0.333

其他客户端有不同的方法来控制默认输出; SQL Developer的行为大致相同,但PL / SQL Developer,Toad等可能不会。

或者您可以将数字格式化为查询的一部分,该查询不依赖于客户端:

SQL> select to_char(1/3, '9990D99999') from dual;

TO_CHAR(1/3
-----------
    0.33333

您需要为计算的任何内容的整数部分提供足够的数字。任何小于零的东西都很简单,但如果小数分隔符前面有太多数字,那么它根本不会显示:

SQL> select to_char(100000/3, '9990D99999') from dual;

TO_CHAR(100
-----------
###########