我使用以下查询将列的数据类型从文本更改为整数,但出现错误:
alter table a.attend alter column terminal TYPE INTEGER ;
错误:"terminal"列无法自动转换为整型
我使用以下查询将列的数据类型从文本更改为整数,但出现错误:
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) ;