Postgres将列整数更改为布尔值

我有一个字段是INTEGER不为NULL默认0,我需要改变为布尔。

这是我正在使用的:

ALTER TABLE mytabe ALTER mycolumn TYPE bool USING CASE WHEN 0 THEN FALSE ELSE TRUE END; 

但是我得到:

 ERROR: argument of CASE/WHEN must be type boolean, not type integer ********** Error ********** ERROR: argument of CASE/WHEN must be type boolean, not type integer SQL state: 42804 

任何想法?

谢谢。

尝试这个:

 ALTER TABLE mytabe ALTER COLUMN mycolumn DROP DEFAULT; ALTER TABLE mytabe ALTER mycolumn TYPE bool USING CASE WHEN mycolumn=0 THEN FALSE ELSE TRUE END; ALTER TABLE mytabe ALTER COLUMN mycolumn SET DEFAULT FALSE; 

您需要首先删除约束(因为它不是一个布尔值),其次,您的CASE语句在语法上是错误的。

以上答案是正确的,帮助我只是一个修改,而不是我使用types铸造的情况

 ALTER TABLE mytabe ALTER COLUMN mycolumn DROP DEFAULT; ALTER TABLE mytabe ALTER mycolumn TYPE bool USING mycolumn::boolean; ALTER TABLE mytabe ALTER COLUMN mycolumn SET DEFAULT FALSE;