【随手记录】PG数值类型记录

在PG里面

1、整数类型包括3种,分别是smallint、int和bigint。别名分别是int2、int(int4)和int8.常用数据类型是int(integer)

2、浮点类型分为精确浮点数类型numeric和不精确浮点数类型real(单精度浮点数据类型)和 double precision(双精度浮点数据类型)。

  • double 和 real 数据类型被称为近似的数据类型。近似数字数据类型并不存储为多数数字指定的精确值,它们只储存这些值的最近似值。在很多应用程序中,指定值与存储值之间的微小差异并不明显。但有时这些差异也值得引起注意。
  • 精确浮点数类型可以用numeric(precision, scale)表示。
  1. numeric类型的标度(scale)是到小数点右边所有小数位的个数, numeric 的精度(precision)是所有数字位的个数
  2. 精度(precision)必须是正值,标度(scale)为零或正值,numeric(precision, 0)等价于numeric(precision)。
  3. numeric不带精度和标度,则系统使用任意精度,不会超过数据库系统储存范围。创建表显示声明精度最大值为1000。
  4. 不限制精度和标度,数据库系统会“原样储存”,限定精度,将导致四舍五入运算。如果一个列被定义成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中文社区文档 更多详情

上一篇:Numeric value out of range: 1264 Out of range value for column


下一篇:PHP黑魔法