PostgreSQL - 改变数字的精度?

And*_*ius 16 sql postgresql alter-table postgresql-9.2

我试着像这样改变精度:

ALTER Table account_invoice ALTER amount_total SET NUMERIC(5);
Run Code Online (Sandbox Code Playgroud)

但我得到语法错误,所以我显然做错了.在PostgreSQL中改变数字精度的正确语法是什么?

huz*_*yfe 22

试试这个:

ALTER Table account_invoice ALTER COLUMN amount_total TYPE DECIMAL(10,5);
Run Code Online (Sandbox Code Playgroud)

DECIMAL(X, Y) - > X表示全长,Y表示数字的精度.

  • 只是术语在 PostgreSQL 中有点令人困惑:http://www.postgresql.org/docs/9.1/static/datatype-numeric.html。这里的精度称为数字的全长。另外为什么是 DECIMAL 而不是 NUMERIC? (2认同)

Mai*_*ota 7

你可以用这个:

ALTER Table account_invoice ALTER amount_total SET DATA TYPE NUMERIC(5,Y);
Run Code Online (Sandbox Code Playgroud)

其中Y是您所需的精确度.

  • **NUMERIC(精度,小数位数)。** 数字的 _scale_ 是小数部分(小数点右侧)的小数位数。数字的_精度_是整个数字中有效位数的总数,即小数点两侧的位数。因此数字 23.5141 的精度为 6,小数位数为 4。整数可以被认为具有零小数位数。[来源](https://www.postgresql.org/docs/9.1/datatype-numeric.html) (2认同)

Gar*_*thD 5

您需要TYPE在列名后使用关键字,而不是 SET

ALTER Table account_invoice ALTER amount_total TYPE NUMERIC(5);
Run Code Online (Sandbox Code Playgroud)

查看文档:ALTER TABLE

SQL Fiddle 示例