PostgreSQL将列从整数转换为文本

5w9g7ksd  于 2023-10-18  发布在  PostgreSQL
关注(0)|答案(3)|浏览(141)

我有一个PostgreSQL(9.0)数据库,其中列card_id当前为integer类型
我需要将此更改为键入文本
实现这一目标的最佳途径是什么?
我能找到的唯一解决方案是创建一个临时列,删除原来的列,然后重命名,我想他们可能是一个更好的方法??

ccrfmcuu

ccrfmcuu1#

你有没有试过什么精细手册suggests

ALTER TABLE table ALTER COLUMN anycol TYPE anytype;

根据当前类型和新类型,您可能需要将USING ...添加到此语句。但在你的具体情况下,我认为这是不必要的。

fquxozlt

fquxozlt2#

ALTER TABLE table ALTER COLUMN card_id SET DATA TYPE text;
s3fp2yjn

s3fp2yjn3#

将现有的数值列转换为布尔值(在Oracle到PostgreSQL的迁移过程中遇到了这个问题),同时删除并启用默认约束:

ALTER TABLE table_name 
    ALTER COLUMN column_name DROP DEFAULT,
    ALTER COLUMN column_name TYPE BOOLEAN 
         USING (case when column_name =1 then true else false end)::BOOLEAN,
    ALTER COLUMN column_name SET DEFAULT false;

相关问题