GBase 8c
其他
文章

任意精度数据类型

GBase社区管理员
发表于2024-02-06 09:45:2924次浏览0个评论

GBase 8c数据库中任意精度型数据类型如下表所示:

表 任意精度型

名称

描述

存储空间

范围

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位。

示例

--创建表。
postgres=#CREATE TABLE decimal_type_t1 (DT_COL1 DECIMAL(10,4));
CREATE TABLE 
--插入数据。
postgres=# INSERT INTO decimal_type_t1 VALUES(123456.122331);
INSERT 0 1 
--查询表中的数据。
postgres=#SELECT * FROM decimal_type_t1;
dt_col1
-------------
 123456.1223
(1 row)
--删除表。
postgres=#DROP TABLE decimal_type_t1;
DROP TABLE 
--创建表。
postgres=#CREATE TABLE numeric_type_t1 (NT_COL1 NUMERIC(10,4));
CREATE TABLE 
--插入数据。
postgres=#INSERT INTO numeric_type_t1 VALUES(123456.12354);
INSERT 0 1 
--查询表中的数据。
postgres=#SELECT * FROM numeric_type_t1;
nt_col1
-------------
 123456.1235
(1 row)
--删除表。
postgres=# DROP TABLE numeric_type_t1;
DROP TABLE

  • 与整数类型相比,任意精度类型需要更大的存储空间,其存储效率、运算效率以及压缩比效果都要差一些。在进行数值类型定义时,优先选择整数类型。当且仅当数值超出整数可表示最大范围时,再选用任意精度类型。

  • 使用Numeric/Decimal进行列定义时,建议指定该列的精度p以及标度s。

评论已关闭