新建一个表create table emp(empno int,amount number(19,4));
插入一条记录insert into emp(1,123456789012345.1234);
查询刚才插入的记录,显示amount的值为123456789012345.0000
请问这是什么原因呢?
我试了一下,小数点前面的整数最大为11位的时候插入是正确的,大于11位的时候,插入的数据就有问题了.

解决方案 »

  1.   

    没问题啊,我试过了,insert into emp(1,123456789012345.1234);你这个语句少了values,肯定执行不成功
      

  2.   

    是挺奇怪的.
    SQL> create table empp(empno int,amount number(19,4));
     
    Table created
     
    SQL> insert into empp VALUES(1,123456789012345.1234);
     
    1 row inserted
     
    SQL> select * from empp;
     
                                      EMPNO                AMOUNT
    --------------------------------------- ---------------------
                                          1  123456789012345.0000
    SQL> select to_char(amount) from empp;
     
    TO_CHAR(AMOUNT)
    ----------------------------------------
    123456789012345.1234
      

  3.   

    呵呵,好像是工具显示的问题,好像oracle对number类型的数据显示的时候默认的是用科学计数法显示的,所以我们看到的值是有误差的。但是为什么不大于15位的值插入是正确的呢?15位是一个什么界限呢?
      

  4.   

    應該是工具的顯示問題,
    create table emp(empno int,amount number(19,4));
    insert into emp values (1,123456789012345.1234);col amount format 9999999999999999999.9999
    select * from emp;     EMPNO                    AMOUNT
    ---------- -------------------------
             1      123456789012345.1234
    1 row selected.
      

  5.   

    工具问题吧。我用的是SQL TOOLS  按照你的做法,查询出来是正确的!
      

  6.   


    create table emp(empno int,amount number(19,4));
    insert into emp values (1,123456789012345.1234);
    select t.empno,to_char(t.amount) from emp t;
    EMPNO TO_CHAR(T.AMOUNT)
    1 123456789012345.1234
    应该是显示问题,添加字符处理就行了
      

  7.   

    精度问题
      1* create table temp(empno int,amount number(19,4))
    SQL> /表已创建。SQL> edi
    已写入 file afiedt.buf  1* insert into temp values(1,123456789012345.1234)
    SQL> /已创建 1 行。SQL> select * from temp;     EMPNO     AMOUNT
    ---------- ----------
             1 1.2346E+14SQL> col AMOUNT format 'fm9999999999999990.9999'
    SQL> /     EMPNO                 AMOUNT
    ---------- ----------------------
             1 123456789012345.1234