New*_*bie 12 sql postgresql casting
我使用以下查询将列的数据类型从文本更改为整数但获取错误:
alter table a.attend alter column terminal TYPE INTEGER ;
Run Code Online (Sandbox Code Playgroud)
错误:列"终端"无法自动转换为整数类型
Viv*_* S. 26
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
Run Code Online (Sandbox Code Playgroud)
您可以从上表中看到我使用了数据类型 - character varying用于id
列.但是,这是一个错误,因为我总是给integers的id.所以varchar在这里使用是一种不好的做法.所以让我们尝试将列类型更改为integer.
ALTER TABLE test ALTER COLUMN id TYPE integer;
Run Code Online (Sandbox Code Playgroud)
但它返回:
错误:列"id"无法自动转换为类型整数SQL状态:42804提示:指定USING表达式以执行转换
这意味着我们不能简单地更改数据类型,因为列中已存在数据.由于数据类型为character varyingPostgres,因此我们只能输入整数,因此不能指望它为整数.所以现在,正如Postgres建议我们可以使用USING表达式将数据转换为整数.
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
Run Code Online (Sandbox Code Playgroud)
有用.
所以你应该使用
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26564 次 |
| 最近记录: |