在oracle中,当我尝试将此值保存到数字类型字段时:37788024213340160它将转换为:3.77880242133402E16
这很糟糕,因为它将值向上舍入,我需要它来保持我放入字段的确切值。
知道如何阻止这种情况发生吗?
如果这有帮助,这里是相关字段的确切定义(MIN_ID):
create table SUBGRP
(
ID NUMBER not null,
NAME VARCHAR2(128) not null,
MIN_ID NUMBER
)
答案 0 :(得分:4)
这只是格式/显示问题:
SQL> create table subgrp (
2 id number not null,
3 name varchar2(128) not null,
4 min_id number
5 );
Table created.
SQL> insert into subgrp values ( 123, 'test', 37788024213340160 );
1 row created.
SQL> commit;
Commit complete.
SQL> select * from subgrp;
ID
----------
NAME
--------------------------------------------------------------------------------
MIN_ID
----------
123
test
3.7788E+16
SQL> col min_id format 999999999999999999999999999
SQL> /
ID
----------
NAME
--------------------------------------------------------------------------------
MIN_ID
----------------------------
123
test
37788024213340160
SQL>
答案 1 :(得分:1)
PL / SQL Developer四舍五入并以科学记数法显示15位数而不是显示原始整数的问题,导致我的Web应用程序也显示错误的舍入数字。
经过一番研究,我决定尝试更改PL / SQL Developer首选项中的设置,以便显示整个数字。这就行了,现在当我查询它在PL / SQL和我的Web应用程序中正确显示的值时!
为此,我做了以下事情:
Tools -> Preferences -> SQL Window -> (Select this): Number fields to_char
此外,您可以使用to_char()将读取包装到列中,这将显示正确的无格式值。