如何在PostgreSQL 8.4中将列数据类型从字符更改为数字?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (98)

我使用以下查询:

ALTER TABLE presales ALTER COLUMN code TYPE numeric(10,0); 

若要更改列的数据类型,请将character(20)改为numeric(10,0)但我发现了一个错误:

column "code" cannot be cast to type numeric

提问于
用户回答回答于

你可以试着用USING:

alter table presales alter column code type numeric(10,0) using code::numeric;
-- Or if you prefer standard casting...
alter table presales alter column code type numeric(10,0) using cast(code as numeric);
用户回答回答于

如果你VARCHAR列包含空字符串(这些字符串为NULL对于PostgreSQL,您可能还记得),您必须使用下面一行中的某些内容来设置默认值:

ALTER TABLE presales ALTER COLUMN code TYPE NUMERIC(10,0)
            USING COALESCE(NULLIF(code, '')::NUMERIC, 0);

扫码关注云+社区

领取腾讯云代金券