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
列’‘ 。但这是错误的,因为我总是给予integers
asid
。因此,使用varchar
此处是一个不好的做法。因此,让我们尝试将列类型更改为integer
。
ALTER TABLE test ALTER COLUMN id TYPE integer;
但它返回:
错误:``渋d’‘列无法自动转换为整数sql状态:42804提示:指定USING表达式以执行转换
这意味着我们可以简单地更改数据类型,因为列中已经有数据。由于数据是character varying
Postgres类型的,尽管我们仅输入了整数,但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) ;