2013-03-08 43 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」的域。

在數據庫方面沒有很好的解決方法。你可以做的唯一的事情就是改變應用程序以期望返回一個數字數據類型。

相關問題