4

我最近正在使用 postgresql-9.1。

出于某种原因,我必须使用不支持数据类型数字但十进制的技术。不幸的是,我在我的 Postgresql 中为它们分配十进制的列的数据类型始终是数字的。我尝试更改类型,但它不起作用,尽管我收到了类似“查询成功返回,12 毫秒内没有结果”的消息。

所以,我想知道如何让列成为十进制。

任何帮助将不胜感激。

例如

我的创建条款:

CREATE TABLE IF NOT EXISTS htest
(
  dsizemin decimal(8,3) NOT NULL,
  dsizemax decimal(8,3) NOT NULL,
  hidentifier character varying(10) NOT NULL,
  tgrade character varying(10) NOT NULL,
  fdvalue decimal(8,3),
  CONSTRAINT htest_pkey PRIMARY KEY (dsizemin , dsizemax , hidentifier , tgrade )
);

我的变更条款:

ALTER TABLE htest
ALTER COLUMN dsizemin TYPE decimal(8,3);

但它不起作用。

4

2 回答 2

5

在 PostgreSQL 中,“decimal”是“numeric”的别名,当您的应用程序认为它需要数据库中的“decimal”类型时,它会带来一些问题。正如 Craig 上面提到的,你甚至不能创建一个名为“decimal”的域

数据库方面没有好的解决方法。您唯一能做的就是将应用程序更改为期望返回数字数据类型。

于 2013-03-14T11:23:22.010 回答
0

使用 Numeric (precision, scale) 存储小数精度表示小数点任一侧的预期位数的总数。scale 是您希望存储的小数位数。

这个数字 (5,5) 意味着您只需要小于 1(负数或正数)且小数点后 5 位的数字。调试,如果postgre sql出错,它可能是数字(6,5),因为它的前导0是小数。

0.12345 就是上面的一个例子。

1.12345 需要一个字段数字 (6,5) 100.12345 需要一个字段数字 (8,5) -100.12345 需要一个字段数字 (8,5)

当您编写一个选择语句来查看小数时,它会四舍五入为 2;但是,如果您执行 Select 100 * [field] from [table] 之类的操作,则应该开始出现额外的小数点......

于 2022-01-04T18:39:58.093 回答