oracle中number整数表示,【NUMBER】Oracle的NUMBER数据类型特点

Oracle的NUMBER数据类型内部使用科学计数法以可变长度格式来存储数据。使用1B存储指数,而另外20B(可变)用于存储该数字剩下的部分。这种存储模式使得NUMBER数据类型可以表示的精度为38位。简单的对Oracle数字类型的存储特点进行简单探索。1.确定数字所占字节的大小可以使用vsize函数获得存储数字时占用的字节。SQL> select vsize(100) from dual;VSIZE(100)----------2表示在存储数字100时将会使用2B空间进行存储,其中1B用于存储数字,另外1B用于存储指数。2.使用dump获取数字的具体存储信息SQL> select dump(100) from dual;DUMP(100)------------------Typ=2 Len=2: 194,23.Oracle NUMBER类型定义的不同形式Oracle是使用精度(precision)和范围(scale)的方式来定义NUMBER数据类型的。如果使用特定的精度定义NUMBER,当超过所定义的精度时将会抛出“ORA-01438: value larger than specified precision allowed for this column”报错。具体举例如下。1)定义精度为6,范围为2的字段进行测试SQL> drop table t purge;Table dropped.SQL> create table t (x number(6,2));Table created.2)符合精度和范围时,成功插入SQL> insert into t values(1234.56);1 row created.SQL> select * from t;X----------1234.563)符合精度,但超出范围时,会四舍五入SQL> insert into t values(123.456);1 row created.SQL> select * from t;X----------1234.56123.46可见数字“123.456”已被四舍五入为“123.46”。4)当超出精度时,将抛出ORA-01438错误SQL> insert into t values(12345.67);insert into t values(12345.67)*ERROR at line 1:ORA-01438: value larger than specified precision allowed for this column有关数字类型的精度的描述请参见文章《【NUMBER】有关Oracle NUMBER类型定义中precision和scale的测试和总结》(http://space.itpub.net/519536/viewspace-557312)。5)当定义数字类型时未给出范围的定义时,表示以整数形式存储SQL> drop table t purge;Table dropped.SQL> create table t (x number(1));Table created.SQL> insert into t values (1.42312312321);1 row created.SQL> select * from t;X----------1SQL> insert into t values (1.52342341234);1 row created.SQL> select * from t;X----------12这里同样体现了四舍五入的原则。4.小结只要掌握了数字类型精度(precision)和范围(scale)的含义,便可以很好地理解Oracle NUMBER类型。Good luck.secooler10.11.13-- The End --

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值