18c 与 19c 上的 Oracle 编号问题
Oracle Number issue on 18c vs 19c
需要确认以下 NUMBER 数据类型在两个 Oracle 版本(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 的刻度值。
这是 客户端 设置的心血来潮,而不是数据库。例如,我 运行 所有这些都在同一个数据库中
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
客户端工具决定显示的精度
这与 Oracle/PLSQL 开发人员工具设置问题有关。请尝试使用以下选项来解决相同问题
Tools -> Preferences -> SQL Window -> Number fields to_char
需要确认以下 NUMBER 数据类型在两个 Oracle 版本(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 的刻度值。
这是 客户端 设置的心血来潮,而不是数据库。例如,我 运行 所有这些都在同一个数据库中
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
客户端工具决定显示的精度
这与 Oracle/PLSQL 开发人员工具设置问题有关。请尝试使用以下选项来解决相同问题
Tools -> Preferences -> SQL Window -> Number fields to_char