NUMBER类型概述
NUMBER类型可以用来存储0、正数、负数
数据范围是1×10-130 ~ 1 × 10126 ,不能等于或者大于1 × 10126 ,否则Oracle会报错(算数表达式的结果同理)
NUMBER类型的定义
NUMBER[(precision[, scale])]
precision —— 数据的有效位数(取值1~38)
scale —— 截取的小数点位(取值-84~127)
当精度超出定义的时候,两者都会做四舍五入操作
一个NUMBER类型的数据会占1~22个字节的数据
实际数据使用NUMBER类型在数据库中的存储
实际数据 | 存储类型 | 实际存储的值 |
---|---|---|
123.89 | NUMBER | 123.89 |
123.89 | NUMBER(3) | 124 |
123.89 | NUMBER(5, 4) | exceed precision1 |
123.89 | NUMBER(6, -2) | 100 |
3.8567 | NUMBER(5, 4) | 3.8567 |
3.85679 | NUMBER(5, 4) | 3.8568 |
3.8567 | NUMBER(6, -2) | 0 |
通过上面存储的值我们可以得出结论,当我们同时定义了数据有效位数和截取的小数点位的时候,数据库会按照要求处理数据最后判断数据是不是符合规则,符合规则直接存储,不符合规则的话则会报错
-
NUMBER(5, 4)意为5位有效数字,小数点截取4位,123.89这个数字按照这个类型保存的数字是123.8900,有限数字已经有7位了,显然超出了定义的限制,故报错 ↩︎