Oracle数据库编号类型字段未存储我输入的值

时间:2015-09-15 18:50:09

标签: oracle oracle11g plsqldeveloper

在oracle中,当我尝试将此值保存到数字类型字段时:37788024213340160它将转换为:3.77880242133402E16

这很糟糕,因为它将值向上舍入,我需要它来保持我放入字段的确切值。

知道如何阻止这种情况发生吗?

如果这有帮助,这里是相关字段的确切定义(MIN_ID):

    create table SUBGRP
    (
      ID                         NUMBER not null, 
      NAME                       VARCHAR2(128) not null, 
      MIN_ID                     NUMBER
    )

2 个答案:

答案 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()将读取包装到列中,这将显示正确的无格式值。