数据库里这个字段的定义为NUMBER(20,2).
在测试的时候发现如果导入的数据确实达到了这个长度和精度,比如 199999999999999999.88,导入之后数据库中这个字段的后面几位会发生变化。 
导入的时候是用分隔符的。这种长度的数值的字段控制文件需要怎么处理吗?

解决方案 »

  1.   

    it's a bug of PLSQL DEVELOPER
      

  2.   

    in database, the value is 199999999999999999.88, but the showing value is:SQL> select * from test;
     
                         X
    ----------------------
                     10.00
                     10.20
                     10.22
     200000000000000000.00
      

  3.   

    这个和PL/SQL DEVELOPER没关系吧?我直接写语句导入的。确实存在这么一个BUG吗
      

  4.   

    in SQLPLUS:SQL> select x from test;         X
    ----------
            10
          10.2
         10.22
    2.0000E+17SQL> col x format fm9999999999999999.99
    SQL> /                   X
    --------------------
    10.
    10.2
    10.22
    ####################SQL> col x format fm999999999999999999999999.9999
    SQL> /.                             X
    ------------------------------
    10.
    10.2
    10.22
    199999999999999999.88
      

  5.   

    主要是,数据库里存的值是对,显示的不对。SQLPLUS中显示的就是对的
    ----------------------------------------表:create table test(x number(20, 2));
    ------------------------------------------
    控制文件:
    LOAD DATA
    INFILE *
    INTO TABLE test 
    FIELDS TERMINATED BY ','
    (x )
    BEGINDATA
    10
    10.2
    10.22
    199999999999999999.88
      

  6.   

    没有问题的,可能是你查询环境的显示问题
    如果在sqlplus下,设置 
    sql>set numwidth 25;
    后,再查询