2

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

在 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 的比例值。

4

2 回答 2

1

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

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

于 2019-10-22T07:27:51.847 回答
0

这是客户端设置而不是数据库的心血来潮。例如,我在同一个数据库上运行所有这些

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

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

于 2019-10-22T07:12:19.127 回答