在PG里面
1、整数类型包括3种,分别是smallint、int和bigint。别名分别是int2、int(int4)和int8.常用数据类型是int(integer)
2、浮点类型分为精确浮点数类型numeric和不精确浮点数类型real(单精度浮点数据类型)和 double precision(双精度浮点数据类型)。
- double 和 real 数据类型被称为近似的数据类型。近似数字数据类型并不存储为多数数字指定的精确值,它们只储存这些值的最近似值。在很多应用程序中,指定值与存储值之间的微小差异并不明显。但有时这些差异也值得引起注意。
- 精确浮点数类型可以用numeric(precision, scale)表示。
- numeric类型的标度(scale)是到小数点右边所有小数位的个数, numeric 的精度(precision)是所有数字位的个数
- 精度(precision)必须是正值,标度(scale)为零或正值,numeric(precision, 0)等价于numeric(precision)。
- numeric不带精度和标度,则系统使用任意精度,不会超过数据库系统储存范围。创建表显示声明精度最大值为1000。
- 不限制精度和标度,数据库系统会“原样储存”,限定精度,将导致四舍五入运算。如果一个列被定义成numeric类型而且指定了标度,那么输入的数据将被强制转换成这个标度,然后,如果小数点左边的位数超过了声明的精度减去声明的比例,那么抛出一个错误。
3、样例:
CREATE TABLE test (id numeric(2,2)); INSERT into test VALUES(1.2345); --插入超过精度和标度的值 --报错信息 ERROR: numeric field overflow DETAIL: A field with precision 2, scale 2 must round to an absolute value less than 1. INSERT into test VALUES(0.2345); --插入超过标度的值,超过标度的部分被四舍五入成小于1的数,这里0.2345插入数据库的值为0.23
4、PG中文社区文档 更多详情