在本教程中,您将学习oracle number
数据类型以及如何使用它来为表定义数字列。
oracle number
数据类型用于存储可能为负值或正值的数值。以下说明了number
数据类型的语法:
number[(precision [, scale])]
oracle number
数据类型具有以下精度和尺度。
1
到38
。-84
到127
。例如,数字1234.56
的精度是6
,尺度是2
。所以要存储这个数字,需要定义为:number(6,2)
。
精度和尺度都是十进制数字,可选。 如果跳过精度和小数位,oracle使用数字的最大范围和精度。
例如,下面的表格定义了一个可以存储数值的数字,其数值范围和精度都是最大的:
number
以下语法定义了一个定点数字:
number(p,s)
要定义一个整数,可以使用下面的形式:
number(p)
上面表示一个精度为p
,尺度为零的定点数,相当于如下:
number(p,0)
oracle允许规模为负数,例如,下面的数字将数值四舍五入到数百。
number(5,-2)
请注意,如果在number(p,s)
列中插入数字,并且数字超过精度p
,则oracle将发出错误。 但是,如果数量超过尺度s
,则oracle将对该值进行四舍五入。
以下语句创建一个名为number_demo
的表,该表由number数字列组成:
create table number_demo (
number_value numeric(6, 2)
);
以下insert
语句向number_demo
表中插入三个数字:
insert into number_demo
values(100.99);
insert into number_demo
values(90.551);
insert into number_demo
values(87.556);
在上面的示例中,
以下示例插入number_value
可以接受的最大值和最小值:
insert into number_demo
values(9999.99);
insert into number_demo
values(-9999.99);
以下示例会导致错误,因为插入的值超出了为列定义的精度。
insert into number_demo
values(-10000);
考虑下面的例子:
insert into number_demo
values(9999.999);
在此示例中,该值被四舍五入,因为数字超过了为列定义的精度。
oracle包含许多可用于定义数字列的别名,如下表所示:
ansi数据类型 | oracle number数据类型 |
---|---|
int |
number(38) |
smallint |
number(38) |
number(p,s) |
number(p,s) |
decimal(p,s) |
number(p,s) |
请注意,int
,smallint
,numeric
和decimal
只是别名。它们不是真正的数据类型。 oracle在内部将这些别名映射到相应的number
数据类型。
在本教程中,您已经学习了oracle number
数据类型以及如何使用它来为表定义数字列。