2017-08-02 101 views
1

我有一個數據庫,其中包含許多包含許多布爾類型列的表。但是我的軟件不支持boolean作爲數據類型。他們的支持團隊告訴我,我應該用數字(1,0),而不是布爾,所以我嘗試:Postgres:將布爾數據類型重寫爲數字

ALTER TABLE foo ALTER COLUMN bar TYPE numeric(1,0) USING bar::numeric(1,0) 

我得到一個錯誤:無法布爾轉換爲數字類型。
我能做些什麼來用數字替代替換布爾列並保留布爾行爲?這個數字(1,0)的東西可以工作嗎?

回答

1

你需要一個額外的步驟 - 投先INT:

t=# select true::int::numeric(1,0); 
numeric 
--------- 
     1 
(1 row) 

所以你的情況這將是:

ALTER TABLE foo ALTER COLUMN bar TYPE numeric(1,0) USING bar::int::numeric(1,0) 

,但坦率地說,我相信只是轉換成int已經足夠。

+0

不,「t」是布爾值或文本。在你的情況顯然是布爾值。 'int'代表整數,應該顯示'1'或'0'... –

相關問題