oracle中integer和number类型
oracle中:
number(10)表示长度是10,问题:
1、integer类型表示的number长度是53?(在oracle的create table中可以定义字段类型为Integer啊?)
2、那number类型表示的长度是否是默认的38?因为我看到有的文章说它的类型大于38。谢谢!

解决方案 »

  1.   

    1. Integer只是个别名。number才是实际类型
    2. 是的
      

  2.   

    INT、INTEGER 是 NUMBER 的受限子类型(只表示整数),相当于 NUMBER(38)。NUMBER 类型最大可表示 38 个十进制位的数值。
      

  3.   

    为什么不看一下ORACLE的在线手册?NUMBER [ (p [, s]) ] 是ORACLE自身的数据类型。 INTEGER或者INT、SMALLINT 则是 ANSI SQL 的数据类型,它对应的ORALCE数据类型是NUMBER(38)
      

  4.   


    手册中关于NUMBER说明的最后一句话就是你要的答案。
      

  5.   

    来个中文的.NUMBER(prescision,scale)存储浮点数,但也可以用来存储整数.precision是这个数字可以使用的最大位数.如果使用小数,这些数字一部分在小数点之前(整数部分),一部分在小数点之后(小数部分).Oracle所支持的最大精度是38,如果使用小数,scale是小数点右边的最大位数.如果precision和scale都没有指定,那就可以存储38位精度的数字.精度超过precision不能存储到Oracle中.
    INTEGER存储整数,整数不包括浮点数.是一个整数数字.
      

  6.   

    1、http://blog.sina.com.cn/s/blog_4ac82fcf0100ii18.html大家请看下上面这篇博文,里面讲到:
    “以前我一直以为 integer=number(38,0) --38是number的最大精度
    刚才无意中发现integer 是个超大的数据类型,最大可以表示为power(10,126)-1
    ...
    一个integer类型最少使用53个字节”2、“因为Oracle的表结构中没有布尔类型,所以很多人干脆用integer代替布尔类型,这个感觉有点“奢侈”;我一般都用char(1)表示布尔型;'0'表示false,'1'表示true”这里我一般用NUMBER(1)来表示boolean类型,这种用法应该与使用char(1)占用的空间一样多吧?
      

  7.   

    话虽这么说,可实际应用中,应该还是有区别吧?
    比如用pro*c编程,对应的number类型对应的C语言变量类型是double/float;
    而INT 类型对应的C语言变量类型就是int了.
      

  8.   

    integer 是number的一个别名 子集关系