18c和19c上的Oracle Number问题

时间:2019-10-18 05:47:26

标签: oracle numbers sqldatatypes oracle18c oracle19c

需要确认以下两个Oracle版本上的NUMBER数据类型的行为( 18c vs 19c ),

在18c,

select cast(0.003856214813393653 as number(20,18)) from dual;

-输出

0.00385621481339365

在19c,

select cast(0.003856214813393653 as number(20,18)) from dual;

-输出

0.003856214813393653

为什么18c会截断最后一位数字?

这是版本问题吗?

Plus 18c似乎无法处理超过17的比例值。

2 个答案:

答案 0 :(得分:0)

这是 client 设置的一种奇思妙想,而不是数据库。例如,所有这些都在同一个数据库上运行

SQL Plus
========
SQL> select cast(0.003856214813393653 as number(20,18)) from dual;

CAST(0.003856214813393653ASNUMBER(20,18))
-----------------------------------------
                               .003856215

SQL Developer
=============
select cast(0.003856214813393653 as number(20,18)) from dual;

0.003856214813393653

SQLcl
======
SQL> select cast(0.003856214813393653 as number(20,18)) from dual;

CAST(0.003856214813393653ASNUMBER(20,18))
-----------------------------------------
                             .00385621481

客户端工具决定显示的精度

答案 1 :(得分:0)

这与Oracle / PLSQL开发人员工具设置问题有关。请尝试使用以下选项来解决同样的问题

  

工具->首选项-> SQL窗口->数字字段到_char