ChatGPT解决这个技术问题 Extra ChatGPT

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

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

ALTER TABLE tbl_name ALTER COLUMN col_name varchar (11);

更改列数据类型的正确命令是什么?


M
Martijn Pieters

请参阅此处的文档:http://www.postgresql.org/docs/current/interactive/sql-altertable.html

ALTER TABLE tbl_name ALTER COLUMN col_name TYPE varchar (11);

对于其他一些情况,您可能需要指定投射方式,如 ALTER TABLE tbl_name ALTER COLUMN col_name TYPE integer USING col_name::integer;
@Nobu 为什么我们必须在 some cases 中这样做,这些情况是什么?
@Darth.Vader 当列中已经存在无法自动转换的数据时,您可能需要执行此操作。
另一个强制转换示例:我有一个 jsonb 列,其中包含需要转换为文本的现有数据。
a
andschar

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

ALTER TABLE tbl_name ALTER COLUMN col_name TYPE integer USING col_name::integer;

正如@nobu 和@jonathan-porter 在对@derek-kromm 答案的评论中指出的那样,有点神秘。


如果该列是一个带有 DEFAULT 值的 NUMERIC 怎么办。如何删除或更改默认值
L
Lalit Mohan

酷@derek-kromm,您的回答已被接受且正确,但我想知道我们是否需要alter多于专栏。这是我们可以做的。

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);

Documentation

干杯!!读简单 写简单