当我执行下一个SQL时:
从双重选择1/3;
结果是,333333333 但我预期的结果是0,333333333
为什么没有oracle显示零?有没有可以影响它的参数? 感谢
编辑:我从使用oo4o(oracle对象为ole)的应用程序中检查了这种行为,并使用sqlDeveloper确认(当我用F5执行sql时,不使用ctrl + intro)。真正的问题在于oo4o Dynaset对象:当我尝试对两个字段的值求和时,得到的是连接,而不是总和:balance
我想知道的是,如果有一些参数或配置使oracle引擎返回没有零的数字,所以我可以打开| off以返回de zero作为整数部分。
答案 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
-----------
###########