Postgresql
將列類型從字元串更改為數字
所以我有一張有 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)
?