我正在使用postgres。我创建了一个表xyz
,其中包含abc
类型的character varying(3)
列。我在'YES'
列中保存了'NO'
或abc
。
我将数据存储在表格中一段时间。但现在要求已经改变。我们需要将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;
但它不起作用,它抛出错误不能自动转换为类型boolean
答案 0 :(得分:4)
您错过了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;