Oracle 数字类型在数据库中使用广泛,其具有精确和近似两种类型。精确类型包括 NUMBER(p,s) 和 NUMERIC(p,s),而近似类型包括 FLOAT(p) 和 REAL。以下将介绍各个数字类型的详细内容。
NUMBER(p,s)
NUMBER 是 Oracle 中精确数值类型的一种,其中 p 是指数值的最大位数,s 是小数位数。NUMBER 数据类型在表中的存储方式与数值无关,只与列的定义和输入的数据精度有关。以下是一个示例:
CREATE TABLE test ( num1 NUMBER(3,2), num2 NUMBER(7,3) );
在上面的示例中,num1 列具有 3 个位数,其中小数点后有 2 位,而 num2 列具有 7 个位数,其中小数点后有 3 位。
NUMERIC(p,s)
NUMERIC 类似于 NUMBER,用于存储精确数值。但是和 NUMBER 不同,NUMERIC 的应用范围不受制于 DBMS 内部存储格式,也就是与数据库无关。以下是一个示例:
CREATE TABLE test ( num1 NUMERIC(3,2), num2 NUMERIC(7,3) );
在上面的示例中,num1 列具有 3 个位数,其中小数点后有 2 位,而 num2 列具有 7 个位数,其中小数点后有 3 位。
FLOAT(p)
FLOAT 用于存储近似数值类型,可用来存储单精度浮点数。 FLOAT(p) 的参数 p 指定了在存储时应使用的位数。在不指定 p 的情况下,默认 p 为 126。以下是一个示例:
CREATE TABLE test ( num1 FLOAT, num2 FLOAT(63) );
在上面的示例中,num1 列使用默认的 126 位存储浮点数,而 num2 列使用 63 位存储浮点数。
REAL
REAL 也是一种近似数值类型,可用来存储单精度浮点数。REAL 与 FLOAT 不同的是,REAL 不需要指定 p 参数,因为其默认使用 63 位存储浮点数。以下是一个示例:
CREATE TABLE test ( num1 REAL, num2 REAL );
在上面的示例中,num1 和 num2 列都使用默认的 63 位存储浮点数。
总结
在 Oracle 中,数字类型包括精确和近似两种类型。精确类型中的 NUMBER(p,s) 和 NUMERIC(p,s) 是存储精确数值的最佳选择,可以有效地控制数值的精度和长度。而近似类型中的 FLOAT(p) 和 REAL 则可以用于存储单精度浮点数,可适用于对精确度要求较低的场合。