Oracle 数值类型[转]
上一篇 /
下一篇 2016-12-07 23:57:11
/ 个人分类:数据库
Oracle的数值类型有int,number,float,decimal,numeric等。
NUMBER类型
定义
定义格式NUMBER (precision,scale)
precision表示数字中的有效位(从左边第一个不为0的数算起,小数点和负号不计入有效位数),取值范围为【1-38】默认38。
scale表示精确到多少位,取值范围为【-84-127】,默认值为0。大于零时,表示数字精确到小数点右边的位数;小于零时,将把该数字取舍到小数点左边的指定位数,所以,NUMBER整数部分允许的长度为(precision- scale),无论scale是正数还是负数,并且,如果precision小于scale,表示存储的是没有整数的小数。
关于number的精度(p)和刻度(s)遵循以下规则:
1) 当一个数的整数部分的长度> p-s 时,Oracle就会报错
2) 当一个数的小数部分的长度> s 时,Oracle就会舍入。
3) 当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。
4) 当s > p 时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入
案例
实际值
| 数据类型
| 存储值
|
1234567.89
| Number
| 1234567.89
|
1234567.89
| Number(8)
| 1234567
|
1234567.89
| Number(6)
| 出错
|
1234567.89
| Number(9,1)
| 1234567.9
|
1234567.89
| Number(9,3)
| 出错
|
1234567.89
| Number(7,2)
| 出错
|
1234567.89
| Number(5,-2)
| 1234600
|
1234511.89
| Number(5,-2)
| 1234500
|
1234567.89
| Number(5,-4)
| 1230000
|
1234567.89
| Number(*,1)
| 1234567.9
|
0.012
| Number(2,3)
| 0.012
|
0.23
| Number(2,3)
| 出错
|
NUMBER类型的子类
decimal,numeric,int等都为SQL、DB2等数据库的数据类型,ORACLE为了兼容才将其引入;但实际上在ORACLE内部还是以NUMBER的形式将其存入,所以在集合关系上它们也都是number的子集。
int类型只能存储整数;
在oracle数据库建表的时候,decimal,numeric不带精度,oracle会自动把它处理成INTEGER;带精度,oracle会自动把它处理成number。
Oracle只用NUMBER(m,n)就可以表示任何复杂的数值数
相关阅读:
- Oracle数据库的使用指南 (zaza9084, 2016-10-25)
- Oracle根因分析案例分享 (zaza9084, 2016-10-26)
- Oracle 11g RAC环境ASM故障恢复案例 (zaza9084, 2016-11-02)
- ORACLE优化工具包DBMS_SQLTUNE (江湖吉祥物, 2016-11-02)
- 修改oracle重做日志文件大小 (江湖吉祥物, 2016-11-03)
- PL/SQL + Oracle客户端 配置记录 (zaza9084, 2016-11-07)
- Oracle数据逻辑迁移分享 (zaza9084, 2016-11-07)
- Oracle与MySQL共同打造高效可靠的数据库架构体系 (zaza9084, 2016-11-15)
- Oracle BigData案例分析 (zaza9084, 2016-11-23)
- SoapUI接口测试(五)JDBC数据库使用方法(Oracle/Mysql) (vs_dev, 2016-11-26)
收藏
举报
TAG:
Oracle