oracle数据类型number
NUMBER数据类型
NUMBER ( precision, scale)
a) precision表⽰数字中的有效位;如果没有指定precision的话,Oracle将使⽤38作为精度。
b) 如果scale⼤于零,表⽰数字精确到⼩数点右边的位数;scale默认设置为0;如果scale⼩于零,Oracle将把该数字取舍到⼩数点左边的指定位数。
c) Precision的取值范围为【1---38】;Scale的取值范围为【-84---127】。
d) NUMBER整数部分允许的长度为(precision- scale),⽆论scale是正数还是负数。
e) 如果precision⼩于scale,表⽰存储的是没有整数的⼩数。
f) Precision表⽰有效位数,有效数位:从左边第⼀个不为0的数算起,⼩数点和负号不计⼊有效位数;scale表⽰精确到多少位,指精确到⼩数点左边或右边多少位(+-决定)。
g) Number值类型举例:
实际值数据类型存储值
1234567.89Number1234567.89
1234567.89Number(8)1234567
1234567.89Number(6)出错
1234567.89Number(9,1)1234567.9
1234567.89Number(9,3)出错
1234567.89Number(7,2)出错
1234567.89Number(5,-2)1234600
1234511.89Number(5,-2)1234500
1234567.89Number(5,-4)1230000
1234567.89Number(*,1)1234567.9
0.012Number(2,3)0.012
0.23Number(2,3)出错
h) 关于precision, scale也可以作如下表述
定点数的精度(p)和刻度(s)遵循以下规则:
1) 当⼀个数的整数部分的长度 > p-s 时,Oracle就会报错
2) 当⼀个数的⼩数部分的长度 > s 时,Oracle就会舍⼊。
3) 当s(scale)为负数时,Oracle就对⼩数点左边的s个数字进⾏舍⼊。
4) 当s > p 时, p表⽰⼩数点后第s位向左最多可以有多少位数字,如果⼤于p则Oracle报错,⼩数点后s位向右的数字被舍⼊
NUMBER类型的⼦类
a) oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的⼦集。
b) int类型只能存储整数;number可以存储浮点数,也可以存储整数。oracle decimal类型
c) 在oracle数据库建表的时候,decimal,numeric不带精度,oracle会⾃动把它处理成INTEGER;带精度,oracle会⾃动把它处理成number。
d) Oracle只⽤NUMBER(m,n)就可以表⽰任何复杂的数字数据。
e) decimal,numeric,int等都为SQL、DB2等数据库的数据类型,ORACLE为了兼容才将其引⼊;但实际上在ORACLE内部还是以NUMBER 的形式将其存⼊。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论