您的位置:首页 > 数据库

【DB.PL/SQL】数据类型 —— 数字

2014-11-20 18:21 190 查看

数字

数据类型 —— NUMBER

NUMBER类型可以保存几乎任何尺度的整数,定点数或者浮点数。NUMBER的算术运算使用一种与平台无关的方式实现的,无论底层硬件平台式什么样的,NUMBER的算术运算都会得到相同的结果。

Oracle数据库最多会分配能容纳40个数字的空间。NUMBER变量取值从 10(-130)到10(126)-1。

约束精度和刻度:

NUMBER(precision, scale)


声明的是一个定点数。其中precision是这个数值中总的有效数字的个数。scale表明小数点右面(正刻度)或者左面(负刻度)的数字个数。precison和scale两个值都必须是整数直接量。precesion的合法取值范围从1到38,scale的合法取值范围是从-84到127.

例如: NUMBER(9,2),这个变量的最大的取值是9 999 999.99:





表示整数值:

刻度scale是可选的,缺省值是0.

例如:

x NUMBER(9, 0);
x NUMBER(9);


都是包含9个有效数字的整数变量,取值范围为 -999 999 999到999 999 999

在声明中仅使用NUMBER,我们就可以表示浮点值
通过精度和刻度的约束,就可以表示定点小数
通过把刻度设置成0或者忽略它,可以表示整数值

数据类型 ——

数字子类型

Oracle同样提供了若干数字子类型。在多数情况下,这些子类型不过是之前讨论的那些基础类型的别名而已:

预定义的数字子类型:

子类型兼容性对应Oracle类型/注意事项
DEC(precision, scale)ANSINUMBER(precision, scale)
DECIMAL(precision, scale)IBMNUMBER(precision, scale)
DOUBLE PRECISIONANSINUMBER,精度达126个二进制数字
FLOATANSI,IBMNUMBER,精度达126个二进制数字
FLOAT(binary_precision)ANSI,IBMNUMBER,进度最多达126个二进制数字
INTANSINUMBER(38)
INTEGERANSI,IBMNUMBER(38)
NATURALN/APLS_INTEGER,只允许非负值
NATURALNN/A和NATURAL一样,但是一个额外的约束是不能为NULL
NUMERIC(precision, scale)ANSINUMBER(precision, scale)
POSITIVEN/APLS_INTEGER,只允许正数
POSITIVENN/A和POSITIVE一样,一个额外的约束是不能为NULL
REALANSINUMBER,精度达63个二进制数
SIGNTYPEN/APLS_INTEGER,只能是 -1,0和1
SMALLINTANSI,IBMNUMBER(38)

数字操作

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: