如何更改列';PostgreSQL表中的数据类型?

如何更改列';PostgreSQL表中的数据类型?,sql,postgresql,psql,alter-table,alter-column,Sql,Postgresql,Psql,Alter Table,Alter Column,在PostgreSQL交互终端中输入以下命令会导致错误: ALTER TABLE tbl_name ALTER COLUMN col_name varchar (11); 更改列数据类型的正确命令是什么?请参阅此处的文档: Cool@derek kromm,你的答案被接受并正确无误,但我想知道我们是否需要对专栏进行更多的修改。我们可以这样做 ALTER TABLE tbl_name ALTER COLUMN col_name TYPE varchar (11), ALTER COLUMN

在PostgreSQL交互终端中输入以下命令会导致错误:

ALTER TABLE tbl_name ALTER COLUMN col_name varchar (11);
更改列数据类型的正确命令是什么?

请参阅此处的文档:


Cool@derek kromm,你的答案被接受并正确无误,但我想知道我们是否需要对专栏进行更多的修改。我们可以这样做

ALTER TABLE tbl_name 
ALTER COLUMN col_name TYPE varchar (11), 
ALTER COLUMN col_name2 TYPE varchar (11),
ALTER COLUMN col_name3 TYPE varchar (11);


干杯!!读简单写简单

如果列中已存在数据,则应执行以下操作:

ALTER TABLE tbl_name使用col_name::integer更改列col_name TYPE integer;

正如@nobu和@jonathan porter在对@derek kromm答案的评论中指出的那样。

对于其他一些情况,您可能需要指定强制转换的方式,如使用col_name::integer的ALTER TABLE tbl_name ALTER COLUMN colu name TYPE integer@Nobu为什么我们必须在
某些情况下这样做,这些情况是什么?@Darth.Vader当列中已经存在无法自动转换的数据时,您可能需要这样做。转换的另一个示例:我有一个jsonb列,其中包含需要转换为文本的现有数据。
ALTER TABLE tbl_name 
ALTER COLUMN col_name TYPE varchar (11), 
ALTER COLUMN col_name2 TYPE varchar (11),
ALTER COLUMN col_name3 TYPE varchar (11);