Oracle修改字段类型
2015-10-26 16:03
381 查看
例:有一个表名为t1,字段段名为deptno,数据类型NUMBER(2),想将改字段的数据类型修改为varchar2(20)。
1、假设字段数据为空,则不管改为什么字段类型,可以直接执行:
alter table t1 modify (deptno varchar2(20));
2、假设字段有数据,则改为varchar2(20)执行时会弹出错误:
ERROR at line 1:
ORA-01439: column to bemodified must be empty to change datatype
这时要用下面方法来解决这个问题:
a、修改原字段名deptno为deptno_tmp
alter table t1 rename column deptno to deptno_tmp;
b、增加一个和原字段名同名的字段deptno,类型为varchar2(20)
alter table t1 add deptno varchar2(20);
c、将原字段deptno_tmp数据更新到增加的字段deptno
update t1 set deptno=trim(deptno_tmp);
d、更新完,删除原字段deptno_tmp
alter table t1 drop column deptno_tmp;
总结:
[b]1、当字段没有数据或者要修改的新类型和原类型兼容时,可以直接modify修改。
2、当字段有数据并用要修改的新类型和原类型不兼容时,要间接新建字段来转移。[/b]
下面附上操作步骤截图:
t1表的表结构如下:
t1表的查询结果如下,deptno字段不为空:
直接使用modify修改字段类型报错
采用上述方法修改字段类型
经检验成功,字段类型从number变为varchar2,数据也完全一致
例:有一个表名为t1,字段段名为deptno,数据类型NUMBER(2),想将改字段的数据类型修改为varchar2(20)。
1、假设字段数据为空,则不管改为什么字段类型,可以直接执行:
alter table t1 modify (deptno varchar2(20));
2、假设字段有数据,则改为varchar2(20)执行时会弹出错误:
ERROR at line 1:
ORA-01439: column to bemodified must be empty to change datatype
这时要用下面方法来解决这个问题:
a、修改原字段名deptno为deptno_tmp
alter table t1 rename column deptno to deptno_tmp;
b、增加一个和原字段名同名的字段deptno,类型为varchar2(20)
alter table t1 add deptno varchar2(20);
c、将原字段deptno_tmp数据更新到增加的字段deptno
update t1 set deptno=trim(deptno_tmp);
d、更新完,删除原字段deptno_tmp
alter table t1 drop column deptno_tmp;
总结:
[b]1、当字段没有数据或者要修改的新类型和原类型兼容时,可以直接modify修改。
2、当字段有数据并用要修改的新类型和原类型不兼容时,要间接新建字段来转移。[/b]
下面附上操作步骤截图:
t1表的表结构如下:
t1表的查询结果如下,deptno字段不为空:
直接使用modify修改字段类型报错
采用上述方法修改字段类型
经检验成功,字段类型从number变为varchar2,数据也完全一致
相关文章推荐
- oracle 12.1.0.2 对 bigfile进行resize 遇到enq:TT-contention
- ebs 请求中选值集信息时报APP-FND-01564: ORACLE error 24345 in fdlget
- Oracle中数据类型number(m,n)
- Oracle怎么更改用户名
- Oracle周别疑问
- oracle 透明网关 to sql server
- Oracle EBS 11i BOM模块常用表结构
- 各种主流数据库的比较(所以说我觉得Oracle这个keng?入的不错?)
- Oracle——数据类型
- Oracle中的执行计划
- rank
- Oracle 11gR2 RAC修改监听默认端口
- within group
- sql server 类oracle vm_contact() 函数创建
- (转)oracle 启动监听 报“监听程序不支持服务” 解决
- oracle url encode decode
- oracle导出sql
- 聊聊Oracle 11g的Snapshot Standby Database(下)
- oracle plsql参数
- 14.3 Using Partitioned Indexes for Performance 使用分区索引