我有一个包含很多表的数据库,其中包含许多boolean类型的列。但我的软件不支持布尔值作为数据类型。他们的支持团队告诉我,我应该使用数字(1,0)而不是布尔值,所以我尝试了:
ALTER TABLE foo ALTER COLUMN bar TYPE numeric(1,0) USING bar::numeric(1,0)
我收到错误:无法将布尔值转换为数字类型。
如何用数字替换替换布尔列并保留布尔行为?这个数字(1,0)的东西可以工作吗?
答案 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已经足够了。