在PostgreSQL中将列数据类型从文本更改为整数
我使用以下查询将列的数据类型从文本更改为整数,但出现错误:在PostgreSQL中将列数据类型从文本更改为整数,sql,postgresql,casting,Sql,Postgresql,Casting,我使用以下查询将列的数据类型从文本更改为整数,但出现错误: alter table a.attend alter column terminal TYPE INTEGER ; 错误:“terminal”列无法自动转换为整型 从上表可以看出,我使用了数据类型–字符变化表示id 专栏。但这是一个错误,因为我总是把整数作为id来给出。因此,在这里使用varchar是一种不好的做法。因此,让我们尝试将列类型更改为integer ALTER TABLE test ALTER COLUMN id TYP
alter table a.attend alter column terminal TYPE INTEGER ;
错误:“terminal”列无法自动转换为整型
从上表可以看出,我使用了数据类型–字符变化
表示id
专栏。但这是一个错误,因为我总是把整数
作为id
来给出。因此,在这里使用varchar
是一种不好的做法。因此,让我们尝试将列类型更改为integer
ALTER TABLE test ALTER COLUMN id TYPE integer;
但它的回报是:
错误:“id”列无法自动转换为整型SQL
状态:42804提示:指定一个使用表达式来执行
转化
这意味着我们不能简单地更改数据类型,因为数据已经存在于列中。由于数据类型为字符变化
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) ;
只有在源类型和目标类型之间没有定义隐式赋值转换时,才需要使用
USING
子句。细节和细节。
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;