我正在使用Postgres。我创建了一个表xyz
具有character varying(3)
类型的abc
之一。我在abc
列中保存了'YES'
或'NO'
。
我将数据存储在表中一段时间。但是现在的要求已经改变。我们需要将abc
列类型从character varying(3)
更改为boolean
。
有什么方法可以将abc
类型从character varying(3)
更改为boolean
,然后将数据YES
更改为true
,将NO
更改为false
?
请帮助我,否则,如果我们不想丢失数据,我该如何继续。
我使用查询
ALTER TABLE xyz ALTER abc TYPE boolean
USING CASE abc WHEN 'YES' THEN TRUE ELSE FALSE END;
但是它不起作用,它不能自动施放错误以键入布尔
您缺少abc
和WHEN
之间的空间:
ALTER TABLE xyz ALTER abc TYPE boolean
USING CASE abc WHEN 'YES' THEN TRUE ELSE FALSE END;
-- Here ------^
另外,您可能需要确保仅将'YES'
和'NO'
转换为布尔值:
ALTER TABLE xyz ALTER abc TYPE boolean
USING CASE abc WHEN 'YES' THEN TRUE
WHEN 'NO' THEN FALSE
END;