Oracle中NUMBER类型问题

本文详细解析了Oracle数据库中NUMBER类型的使用方法及限制条件,包括精度(precision)和小数位数(scale)的具体含义和作用,以及不同设置下数据的实际存储形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OracleNUMBER类型问题<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Frombaidu

OracleNumber类型可以用来存储0正负定点或者浮点数,可表示的数据范围在
1.0 * 10(-130) —— 9.9...9 * 10(125) {38
9后边带88
0}
的数字,当Oracle中的数学表达式的值>=1.0*10(126)时,Oracle就会报错。

Number
的数据声明如下:

表示

作用

说明

Number(p, s)

声明一个定点数

p(precision)为精度s(scale)表示小数点右边的数字个数,精度最大值为38scale的取值范围为-84127

Number(p)

声明一个整数

相当于Number(p, 0)

Number

声明一个浮点数

其精度为38,要注意的是scale的值没有应用,也就是说scale的指不能简单的理解为0,或者其他的数。

定点数的精度(p)和刻度(s)遵循以下规则:

当一个数的整数部分的长度 > p-s Oracle就会报错

当一个数的小数部分的长度 > s Oracle就会舍入。

s(scale)为负数时Oracle就对小数点左边的s个数字进行舍入。

s > p , p表示小数点后第s位向左最多可以有多少位数字,如果大于pOracle报错,小数点后s位向右的数字被舍入.

Fromhttp://blog.youkuaiyun.com/mr_zhao/archive/<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><chsdate w:st="on" isrocdate="False" islunardate="False" day="29" month="6" year="2007">2007/06/29</chsdate>/1671605.aspx

2.NUMBER类型细讲:
Oracle number datatype
语法:NUMBER[(precision [, scale])]
简称:precision --> p
scale --> s

NUMBER(p, s)
范围: 1 <= p <=38, -84 <= s <= 127
保存数据范围:-1.0e-130 <= number value < 1.0e+126
保存在机器内部的范围: 1 ~ 22 bytes

有效位:从左边第一个不为0的数算起的位数。
s的情况:
s > 0
精确到小数点右边s位,并四舍五入。然后检验有效位是否 <= p
s < 0
精确到小数点左边s位,并四舍五入。然后检验有效位是否 <= p + |s|
s = 0
此时NUMBER表示整数。

eg:
Actual Data Specified As Stored As
----------------------------------------
123.89 NUMBER 123.89
123.89 NUMBER(3) 124
123.89 NUMBER(6,2) 123.89
123.89 NUMBER(6,1) 123.9
123.89 NUMBER(4,2) exceeds precision (
有效位为5, 5 > 4)
123.89 NUMBER(6,-2) 100
.01234 NUMBER(4,5) .01234 (
有效位为4)
.00012 NUMBER(4,5) .00012
.000127 NUMBER(4,5) .00013
.0000012 NUMBER(2,7) .0000012
.00000123 NUMBER(2,7) .0000012
1.2e-4 NUMBER(2,5) 0.00012
1.2e-5 NUMBER(2,5) 0.00001
123.2564 NUMBER 123.2564
1234.9876 NUMBER(6,2) 1234.99
12345.12345 NUMBER(6,2) Error (
有效位为5+2 > 6)
1234.9876 NUMBER(6) 1235 (s
没有表示s=0)
12345.345 NUMBER(5,-2) 12300
1234567 NUMBER(5,-2) 1234600
12345678 NUMBER(5,-2) Error (
有效位为8 > 7)
123456789 NUMBER(5,-4) 123460000
1234567890 NUMBER(5,-4) Error (
有效位为10 > 9)
12345.58 NUMBER(*, 1) 12345.6
0.1 NUMBER(4,5) Error (0.10000,
有效位为5 > 4)
0.01234567 NUMBER(4,5) 0.01235
0.09999 NUMBER(4,5) 0.09999

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值