请教如何修改列的数据类型

[复制链接]
查看11 | 回复9 | 2008-8-15 22:44:07 | 显示全部楼层 |阅读模式
一张有数据的表AAA,想修改其中有一列A1为VARCHAR2(32)型(原来为NUMBER型),请问如何修改?A1中是有数据的,我不想破坏原来的数据,只想修改列类型。望高手赐教,谢谢!
回复

使用道具 举报

千问 | 2008-8-15 22:44:07 | 显示全部楼层
直接 alter table aaa modify (a1 varchar2(32));
不行吗?
回复

使用道具 举报

千问 | 2008-8-15 22:44:07 | 显示全部楼层
最初由 cjf107 发布
[B]直接 alter table aaa modify (a1 varchar2(32));
不行吗? [/B]

不行,修改列必须为空
SQL> alter table AAA2 modify(A1 varchar2(32));
alter table AAA
modify(A1 varchar2(32))
ORA-01439: 要更改数据类型,则要修改的列必须为空 (empty)
回复

使用道具 举报

千问 | 2008-8-15 22:44:07 | 显示全部楼层
提示很清楚了!
回复

使用道具 举报

千问 | 2008-8-15 22:44:07 | 显示全部楼层
create table bbb as select * from aaa where 1=2;
alter table bbb modify (a1 varchar2(32));
insert into bbb select * from aaa;
drop table aaa;
rename table bbb to aaa;
回复

使用道具 举报

千问 | 2008-8-15 22:44:07 | 显示全部楼层
create table tab_new as select to_char(col_name) col_new,..... from tab_old;
drop table tab_old;
rename table tab_new to tab_old;
回复

使用道具 举报

千问 | 2008-8-15 22:44:07 | 显示全部楼层
直接alter table就可以了,如果还不行的话就用PL/SQL工具edit来做。你报的错误是数据不能为空 ,那说明你这个字段已经有了数据了解决办法很多中,也可以建临时表改后再update进去就可以了
回复

使用道具 举报

千问 | 2008-8-15 22:44:07 | 显示全部楼层
最初由 suniori 发布
[B]create table bbb as select * from aaa where 1=2;
alter table bbb modify (a1 varchar2(32));
insert into bbb select * from aaa;
drop table aaa;
rename table bbb to aaa; [/B]


成功了,谢谢高手!
回复

使用道具 举报

千问 | 2008-8-15 22:44:07 | 显示全部楼层
为什么不增加字段后UPDATE 过去? 那更省事。
回复

使用道具 举报

千问 | 2008-8-15 22:44:07 | 显示全部楼层
good
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行