我使用以下查询将列的数据类型从文本更改为整数,但出现错误:

 alter table a.attend alter column terminal TYPE INTEGER ;

错误:"terminal"列无法自动转换为整型

推荐答案

create table test(id varchar );
insert into test values('1');
insert into test values('11');
insert into test values('12');

select * from test

 --Result--
 id
 character varying
--------------------------
 1
 11
 12

从上表中可以看出,我使用了数据类型–character varying表示id

ALTER TABLE test ALTER COLUMN id TYPE integer;

但它的回报是:

错误:"id"列无法自动转换为整型SQL

这意味着我们不能简单地更改数据类型,因为数据已经存在于列中.由于数据的类型是character varying Postgres,所以我们不能期望它是整数,尽管我们只输入了整数.现在,正如Postgres所建议的,我们可以使用USING表达式将数据转换成整数.

ALTER TABLE test ALTER COLUMN id  TYPE integer USING (id::integer);

它起作用了.


所以你应该使用

alter table a.attend alter column terminal TYPE INTEGER  USING (terminal::integer) ;

Postgresql相关问答推荐

如何在gorm中创建一个可读但不可写的字段

Postgs SQL用于比较两个表之间的数据并填充到目标中

Postgres 13.8 -如何在对数据执行窗口操作时返回所有行

PostgreSQL:函数结果表内冲突(...)上的";中的字段名称

复合索引列的顺序导致不同的计划

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

使用FastAPI和PostgreSQL进行测试

在 PostgreSQL 中 Select 数字命名列会返回 ?column?

有没有办法使用postgresql将具有不同ID的同一行多次添加到表中?

使用包含重复元素的数组 Select 重复值

Heroku Rails 4 无法连接到服务器:connection refused

SQLAlchemy 中使用什么类型存储字节字符串?

从局域网访问 PostgreSQL 服务器

Postgres jsonbNOT contains运算符

Postgres - 如果找不到记录,则在更新时返回错误

使用 pg-promise 插入多条记录

带有偏移限制的 Select 查询太慢了

如何使用 PostgreSQL 在任何列中查找所有具有 NULL 值的行

在布尔字段上添加索引

PL/pgSQL 中的 BREAK 语句