Oracle修改字段类型方法总结
2016-04-01 16:48
696 查看
有一个表名为tb,字段段名为name,数据类型nchar(20)。
1、假设字段数据为空,则不管改为什么字段类型,可以直接执行:
alter table tb modify (name nvarchar2(20));
2、假设字段有数据,则改为nvarchar2(20)可以直接执行:
alter table tb modify (name nvarchar2(20));
3、假设字段有数据,则改为varchar2(40)执行时会弹出:“ORA-01439:要更改数据类型,则要修改的列必须为空”,这时要用下面方法来解决这个问题:
/*修改原字段名name为name_tmp*/
alter table tb rename column name to name_tmp;
/*增加一个和原字段名同名的字段name*/
alter table tb add name varchar2(40);
/*将原字段name_tmp数据更新到增加的字段name*/
update tb set name=trim(name_tmp);
/*更新完,删除原字段name_tmp*/
alter table tb drop column name_tmp;
总结:
1、当字段没有数据或者要修改的新类型和原类型兼容时,可以直接modify修改。
2、当字段有数据并用要修改的新类型和原类型不兼容时,要间接新建字段来转移。
3、如果表数据多,可如下处理
create table
tb_tmp as select * from tb;
truncate table tb;
alter table
tb modify (name varchar2(20));
insert into tb select * from tb_tmp;
1、假设字段数据为空,则不管改为什么字段类型,可以直接执行:
alter table tb modify (name nvarchar2(20));
2、假设字段有数据,则改为nvarchar2(20)可以直接执行:
alter table tb modify (name nvarchar2(20));
3、假设字段有数据,则改为varchar2(40)执行时会弹出:“ORA-01439:要更改数据类型,则要修改的列必须为空”,这时要用下面方法来解决这个问题:
/*修改原字段名name为name_tmp*/
alter table tb rename column name to name_tmp;
/*增加一个和原字段名同名的字段name*/
alter table tb add name varchar2(40);
/*将原字段name_tmp数据更新到增加的字段name*/
update tb set name=trim(name_tmp);
/*更新完,删除原字段name_tmp*/
alter table tb drop column name_tmp;
总结:
1、当字段没有数据或者要修改的新类型和原类型兼容时,可以直接modify修改。
2、当字段有数据并用要修改的新类型和原类型不兼容时,要间接新建字段来转移。
3、如果表数据多,可如下处理
create table
tb_tmp as select * from tb;
truncate table tb;
alter table
tb modify (name varchar2(20));
insert into tb select * from tb_tmp;
相关文章推荐
- 【转】oracle定制定时执行任务
- 数据库迁移.从DB2到Oracle
- Oracle 树操作(select…start with…connect by…prior)
- oracle中 connect by prior 递归算法
- Oracle —— 闪回查询恢复delete删除数据
- Java —— JAVA读取Oracle中的blob图片字段并显示
- linux下安装oracle客户端
- 【转】ORACLE制作表时的“小计”和“合计” (ROLLUP)
- Oracle 检查表的数据变动
- Oracle —— to_date() 与 to_char() 日期和字符串转换
- ORACLE常用sql语句
- oracle——SQL复习09
- Oracle - 数据库的实例、表空间、用户、表之间关系
- Oracle创建DBLink的方法
- Oracle SYSAUX 表空间说明(转)
- oracle 存储过程的基本语法
- oracle创建用户并授权
- ERROR OGG-10151 Oracle GoldenGate Capture for Oracle, capture.prm: (capture
- Oracle与SQL Server实现表数据同步
- oracle的监听配置