number(5,0)这样怎么不行啊,还是可以接收小数

解决方案 »

  1.   

    如果你不想接受小数的话,可以这样定义:number(5)。
    number(p,s):表示可容纳的数字位数为p位,包括整数部分和小数部分,但不包括小数点。整数部分只能容纳(p-s)位。
      

  2.   

    SQL> create table test1 (t1 number(5),t2 number(5,2));表已创建。SQL> insert into test1(t1,t2) values(1234.2,123.32);已创建 1 行。还是不行啊,输入小数还能创建成功
      

  3.   

    SQL> create table test1 (t1 number(5),t2 number(5,2));表已创建。SQL> insert into test1(t1,t2) values(1234.2,123.32);已创建 1 行。还是不行啊,输入小数还能创建成功 
      

  4.   


    SQL> create table testnum(num1 number(5), num2 number(5,2));表已创建。SQL> insert into testnum(num1, num2) values(123.1, 123.12);已创建 1 行。SQL> insert into testnum(num1, num2) values(12312, 123.12);已创建 1 行。SQL> insert into testnum(num1, num2) values(123121, 123.12);
    insert into testnum(num1, num2) values(123121, 123.12)
                                           *
    第 1 行出现错误:
    ORA-01438: 值大于为此列指定的允许精度
    SQL> insert into testnum(num1, num2) values(12312, 123.121);已创建 1 行。SQL> insert into testnum(num1, num2) values(12312, 123.1211);已创建 1 行。SQL> insert into testnum(num1, num2) values(12312, 1213.1211);
    insert into testnum(num1, num2) values(12312, 1213.1211)
                                                  *
    第 1 行出现错误:
    ORA-01438: 值大于为此列指定的允许精度
    SQL> insert into testnum(num1, num2) values(12312.1, 1213.1211);
    insert into testnum(num1, num2) values(12312.1, 1213.1211)
                                                    *
    第 1 行出现错误:
    ORA-01438: 值大于为此列指定的允许精度好吧,我也纳闷了。Oracle在这方面应该有一定的机制。
      

  5.   

    SQL> create table test1 (t1 number(5),t2 number(5,2));表已创建。SQL> insert into test1(t1,t2) values(1234.2,123.32);已创建 1 行。还是不行啊,输入小数还能创建成功 我再查查。
      

  6.   

    看完以下几篇文章,应该有一定的了解了:Oracle数字的3种基本类型介绍oracle的number和integer类型 Oracle number 数据类型对整数的存储【NUMBER】有关Oracle NUMBER类型定义中precision和scale的测试和总结
      

  7.   

    number(5) 就是 number(5,0)没有任何区别。
    number(5) 只保证它存储的是整数,你输入小数自动四舍五入。
      

  8.   

    可通过添加check约束来满足你的需求
    SQL> create table test(id number check(instr(to_char(id),'.') = 0));-----------------------------
    -------测试如下------------
    -----------------------------
    SQL> insert into test values(5.1);
    insert into test values(5.1)
    *
    ERROR at line 1:
    ORA-02290: check constraint (XIONGWENHUA.SYS_C006977) violated
    SQL> select * from test;        ID
    ----------
             5SQL>