Postgresql

將列類型從字元串更改為數字

  • May 16, 2015

所以我有一張有 520 萬條記錄的表。此表中的 3 列用於薪金。這些列目前儲存為字元串,我想將數據類型更改為numeric(我在研究時理解它numeric優於float)。

我正在嘗試執行此命令:

ALTER TABLE lca_test ALTER COLUMN prevailing_wage TYPE numeric(10,0)
USING prevailing_wage::numeric;

但我得到了錯誤

錯誤:數字類型的輸入語法無效:“40768,43”

我不確定如何使它工作。任何想法?

我對 postgres SQL 語法一無所知,但是這似乎是 TYPE numeric(10,0) 不包含十進製粒度 (numeric(10,2)) 的問題,或者貨幣在使用逗號而不是小數的歐洲格式。

用點替換逗號,這是預設的“小數點”。

ALTER TABLE lca_test ALTER COLUMN prevailing_wage TYPE numeric(10,0)
USING translate(prevailing_wage, ',', '.')::numeric;

但只要您不打算儲存小數位 ( numeric(10,0)),您就應該真正使用integer(涵蓋 -2147483648 到 +2147483647 或bigint(涵蓋 -9223372036854775808 到 +9223372036854775807)。

或者你真的是說numeric(10,2)而不是numeric(10,0)

引用自:https://dba.stackexchange.com/questions/101643