Oracle数字的3种基本Oracle
Number类型,即
,NUMBER、BINARY_INTENER与PLS_INTEGER。NUMBER的主要功能是用来描述相关整数或是实数,但是PLS_INTEGER与BINARY_INTENER只能来描述整数。
NUMBER,是以十进制格式进行存储的,它便于存储,但是在计算上,系统会自动的将它转换成为二进制进行运算的。它的定义方式是
NUMBER(P,S),P是精度,最大38位,S是刻度范围,可在-84127间取值。例如:NUMBER(5,2)可以用来存储表示
-999.99999.99间的数值。P、S可以在定义是省略,例如:NUMBER(5)、NUMBER等;
BINARY_INTENER用来描述不存储在数据库中,但是需要用来计算的带符号的整数值。它以2的补码二进制形式表述。循环计数器经常使用这种Oracle
Number类型。
PLS_INTEGER和BINARY_INTENER唯一区别是在计算当中发生溢出时,BINARY_INTENER型的变量会被自动指派给一个NUMBER型而不会出错,PLS_INTEGER型的变量将会发生错误。
☆Number补充 在Oracle Number类型可以用来存储0,正负定点或者浮点数,可表示的数据范围在 1.0 *
10(-130) —— 9.99 * 10(125) {38个9后边带88个0}
的Oracle数字,当Oracle中的数学表达式的值>=1.0*10(126)时,Oracle就会报错。
Number的数据声明如下:
1)Number(p, s) 声明一个定点数
p(precision)为精度,s(scale)表示小数点右边的Oracle数字个数,精度最大值为38,scale的取值范围为-84到127
2)Number(p) 声明一个整数 相当于Number(p, 0)
3)Number 声明一个浮点数
其精度为38,要注意的是scale的值没有应用,也就是说scale的指不能简单的理解为0,或者其他的数。
定点数的精度(p)和刻度(s)遵循以下规则:
当s>0时(s表示小数点右边的数字的个数):
当一个数的整数部分的长度 > p-s 时,Oracle就会报错
当一个数的小数部分的长度 > s 时,Oracle就会舍入。
当s<0时(s表示小数点左边的数字的个数):
Oracle就对小数点左边的s个数字进行舍入。
当s > p 时,
p表示小数点后第s位向左最多可以有多少位Oracle数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入例如:
Value–>Datatype–>Stored Value
123.2564–>NUMBER–>123.2564(不限制)
1234.9876–>NUMBER(6,2)–>1234.99(精确到小数点后两位)
12345.12345–>NUMBER(6,2)–>Error(小数点左边的有效数字长度5+小数点右边的有效Oracle数字长度2>规定精度6)
1234.9876–>NUMBER(6)–>1235 (等价于NUMBER(6,0))
12345.345–>NUMBER(5,-2)–>12300 (小数点左边两位做四舍五入)
12345678–>NUMBER(5,-2)–>Error (8-2>5)
123456789–>NUMBER(5,-4)–>123460000
1234567890–>NUMBER(5,-4)–>Error
12345.58–>NUMBER(*, 1)–>12345.6
0.1–>NUMBER(4,5)–>Error
0.01234567–>NUMBER(4,5)–>0.01235
0.09999–>NUMBER(4,5)–>0.09999
0.099996–>NUMBER(4,5)–>Error
以上的相关内容就是对Oracle 数字类型的介绍,望你能有所收获。