任意精度型
名称 | 描述 | 存储空间 | 范围 |
NUMERIC[ (p[,s])], DECIMAL[( p[,s])] | 精度p取值范围为[1,1000],标度s取值范围为[0,p]。说明 p为总位数,s为小 数位数。 | 用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。 | 未指定精度的情况下,小数点前最大131,072位,小数点后最大16,383位。 |
NUMBER[( p[,s])] | NUMERIC类型的别名。 | 用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。 | 未指定精度的情况下,小数点前最大131,072位,小数点后最大16,383位。 |
示例
--创建表。
gbase=# CREATE TABLE decimal_type_t1 (DT_COL1 DECIMAL(10,4));
CREATE TABLE
--插入数据。
gbase=# INSERT INTO decimal_type_t1 VALUES(123456.122331);
INSERT 0 1
--查询表中的数据。
gbase=# SELECT * FROM decimal_type_t1;
dt_col1
-------------
123456.1223
(1 row)
--删除表。
gbase=# DROP TABLE decimal_type_t1;
DROP TABLE
--创建表。
gbase=# CREATE TABLE numeric_type_t1 (NT_COL1 NUMERIC(10,4));
CREATE TABLE
--插入数据。
gbase=# INSERT INTO numeric_type_t1 VALUES(123456.12354);
INSERT 0 1
--查询表中的数据。
gbase=# SELECT * FROM numeric_type_t1;
nt_col1
-------------
123456.1235
(1 row)
--删除表。
gbase=# DROP TABLE numeric_type_t1;
DROP TABLE
l 与整数类型相比,任意精度类型需要更大的存储空间,其存储效率、运算效率以及压缩比效果都要差一些。在进行数值类型定义时,优先选择整数类型。当且仅当数值超出整数可表示最大范围时,再选用任意精度类型。
l 使用Numeric/Decimal进行列定义时,建议指定该列的精度p以及标度s。