2013-03-08 45 views
3

我最近使用postgresql-9.1。如何为Postgresql中的列分配数据类型小数?

出于某种原因,我必须使用不支持数据类型数字但小数点的技术。不幸的是,我在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); 

但它不工作。

+3

[“类型'decimal'和'numeric'是等效的]](http://www.postgresql.org/docs/current/interactive/datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL)。该工具向数据库询问表的模式并且不理解创建“decimal”列时返回的“数字”的问题? – 2013-03-08 03:50:31

+3

'decimal'只是'numeric'的一个别名,用于为Oracle编写的程序更快乐一些。它看起来并不像是一个带有DOMAIN的“真实”别名,所以我怀疑你运气不好,除非你可以让程序处理显示'numeric'的表元数据,它在'期望'decimal '。试试'SELECT'1':: decimal;'来看看我的意思。 – 2013-03-08 04:45:20

+0

to @muistooshort:是的,该工具不理解数字,所以很伤心。 – Xing 2013-03-09 05:49:16

回答

4

在PostgreSQL中,“decimal”是“数字”的别名,当您的应用程序认为它需要数据库中名为“decimal”的类型时会引起一些问题。正如Craig指出的那样,你甚至不能创建一个名为“decimal”的域。

在数据库方面没有很好的解决方法。你可以做的唯一的事情就是改变应用程序以期望返回一个数字数据类型。

相关问题