Saa*_*wal 4 sql postgresql ddl alter-table
我正在使用 postgres。我创建了一个表xyz,其中包含一个abc类型为 的列character varying(3)。我保存'YES'或'NO'在abc列。
我在表中存储了一段时间的数据。但是现在要求变了。我们需要将abc列类型从更改character varying(3)为boolean。
有什么方法可以将abc类型从character varying(3)toboolean更改为和将数据更改YES为true和NOtofalse吗?
请帮助我,否则如果我们不想丢失数据,我该如何继续。
我使用查询
ALTER TABLE xyz ALTER abc TYPE boolean
USING CASE abc WHEN 'YES' THEN TRUE ELSE FALSE END;
Run Code Online (Sandbox Code Playgroud)
但它不起作用,它抛出错误无法自动转换为布尔类型
您在abc和之间缺少空格WHEN:
ALTER TABLE xyz ALTER abc TYPE boolean
USING CASE abc WHEN 'YES' THEN TRUE ELSE FALSE END;
-- Here ------^
Run Code Online (Sandbox Code Playgroud)
此外,您可能希望确保只有'YES'和'NO'被转换为布尔值:
ALTER TABLE xyz ALTER abc TYPE boolean
USING CASE abc WHEN 'YES' THEN TRUE
WHEN 'NO' THEN FALSE
END;
Run Code Online (Sandbox Code Playgroud)