淘先锋技术网

首页 1 2 3 4 5 6 7

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 则可以用于存储单精度浮点数,可适用于对精确度要求较低的场合。