postgresql 在POSTGRES中,numeric(9,0)和int之间有什么区别?

aoyhnmkz  于 2022-12-03  发布在  PostgreSQL
关注(0)|答案(2)|浏览(932)

在Postgres中NUMERIC(9,0)INT是一样的吗?
每种类型可以存储多少字节的数据?
背景:在启动Spring容器时,我使用auto-ddl API将脚本应用到数据库。现在,我尝试通过为POSTGRES服务器生成db-changelog来使用liquibase生成脚本。

1bqhqjot

1bqhqjot1#

NUMERIC(9, 0)INT在Postgres中是不同的类型。重要的区别在于存储格式。
numeric类型可以根据需要在0到255字节之间。类型修饰符(9, 0)对保存数据的格式没有影响,它只是最大长度的限制。
INT类型具有4个字节的固定长度。
'999999999'::numeric的大小:

postgres=# select pg_column_size('999999999'::numeric);
+----------------+
| pg_column_size |
+----------------+
|             12 |
+----------------+
(1 row)
  • 注意 *:NUMERIC类型上的某些操作比INT类型上的慢。NUMERIC类型需要更多空间;它是为处理大数字或精确数字而设计的。它不是为取代INT类型而设计的。

Postgres不会将NUMERIC(x, 0)转换为INTBIGINT

luaexgnf

luaexgnf2#

不,它们不一样。
INT是一个4字节的列,存储从-2147483648到+2147483647的整数值。
NUMERIC(9, 0)是一个9到14字节得列,存储从-999999999到99999999得整数值.

相关问题