我使用以下查询:

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

要将列的数据类型从character(20)更改为numeric(10,0),但我得到了错误:

"代码"列不能转换为数字类型

推荐答案

您可以try 使用USING:

可选的USING子句指定如何从旧列计算新列值;如果省略,默认转换与从旧数据类型转换为新数据类型的赋值转换相同.如果没有从旧类型转换为新类型的隐式或赋值,则必须提供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);

如果你在code中有任何东西不能转换成数字,这将失败;如果使用失败,在更改列类型之前,必须手动清理非数字数据.

Postgresql相关问答推荐

PostgreSQL中btree_gist索引涉及integer和tstzrange属性查询计划的问题

在SqlalChemy中转义动态CamelCase场

Org.postgresql.util.PSQLException:错误:函数LOWER(BYTEA)不存在

锁定模式与PostgreSQL中的另一种锁定模式冲突到底是什么意思?

GORM Golang SQL查询执行不区分大小写的搜索不起作用

如何在Postgres中对分区表使用Hibernate验证?

PG 16 的 AGE 安装抛出错误:无法创建 src/backend/parser/ag_scanner.c

在 postgres/presto/AWS-Athena 中,与 array_agg( (col1, col2) ) 相反的是什么来获得每组多行?

PostgreSQL:在timestamp::DATE 上创建索引

OpenShift:如何从我的 PC 连接到 postgresql

Heroku PGError:operator does not exist: character varying = integer

如何在可选参数上查询 postgres?

Postgresql SERIAL 的工作方式是否不同?

当成功有时会导致退出代码为 1 时,如何可靠地确定 pg_restore 是否成功?

防止 CHARACTER VARYING 字段中出现空字符串

什么是 Postgres session?

SQLAlchemy 声明式:定义触发器和索引 (Postgres 9)

PostgreSQL:从转储中恢复数据库 - 语法错误

错误:permission denied for language c

postgres LISTEN/NOTIFY rails