Postgres Alter表将列类型从char转换为bigint

Lig*_*art 32 postgresql

可能重复:
如何在postgresql 8.4中将列数据类型从字符更改为数字

如果我有一个varchar类型的字段(并且所有值都是null或数字的字符串表示),我如何使用alter table将此列类型转换为bigint?

ara*_*nid 87

简单地通过解析字符串(转换)来转换:

alter table the_table alter column the_column type bigint using the_column::bigint
Run Code Online (Sandbox Code Playgroud)

实际上,您可以使用任何表达式the_column而不是the_column::bigint自定义转换.

请注意,这将重写表格,甚至锁定甚至读者,直到完成.

  • 大!这显然使我的答案错了.所以我删除了它.并学到了新的东西. (4认同)

Sco*_*t S 5

您可以创建一个类型为的临时列bigint,然后像这样执行 SQL

UPDATE my_table SET bigint_column=varchar_column::bigint;
Run Code Online (Sandbox Code Playgroud)

然后删除您的 varchar_column 并重命名 bigint_column。这有点迂回,但不需要在 postgres 中进行自定义转换。