Oracle修改字段类型方法小技巧

有一个表名为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、当字段有数据并用要修改的新类型和原类型不兼容时,要间接新建字段来转移。

源地址:http://blog.csdn.net/gdjlc/article/details/23762549/

时间: 2024-10-29 19:08:02

Oracle修改字段类型方法小技巧的相关文章

Oracle修改字段类型方法总结

SQL Code 12345678910111213141516171819202122232425   有一个表名为tb,字段段名为name,数据类型nchar(20). 1.假设字段数据为空,则不管改为什么字段类型,可以直接执行:alter table tb modify (name nvarchar2(20)); 2.假设字段有数据,则改为nvarchar2(20)可以直接执行:alter table tb modify (name nvarchar2(20)); 3.假设字段有数据,则改

Oracle修改字段类型方法总结(转)

有一个表名为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:要更改数据类型,则要修改的列必须为空”,这时

Oracle修改字段类型方法

有一个表名为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:要更改数据类型,则要修改的列必须为空&q

Oracle修改字段类型和长度

Oracle修改字段名 alter table 表名 rename column 旧字段名 to 新字段名 Oracle修改字段类型和长度 alter table 表名 modify 字段名 数据类型 如果是修改数据类型比如由varchar2修改为int且字段内有值,会报如下错误 解决方法参考:http://blog.csdn.net/itmyhome1990/article/details/8681206 转载请注明出处:http://blog.csdn.net/itmyhome1990/ar

oracle修改字段类型

有一个表名为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:要更改数据类型,则要修改的列必须为空&q

oracle 修改字段类型的方法(转)

今天公司因为业务需要,修要修改某个字段数据类型有number(5),变为number(5,2)型 要是没有数据的话直接用以下语句即可 alter   table  tb_test  modify permile  number(5,2); 但是有数据的话 就不能用上面方法了, alter table tb_test add permile_temp number(5,2) update tb_test set  permile_temp=permile; alter table drop col

Oracle/SQL 修改字段类型和长度

标准SQL修改字段类型和长度语句:ALTER TABLE tableName modify column columnName 类型;例如Mysql的修改字段类型语句:alter table test modify column name varchar(255); Oracle修改字段类型和长度语句:ALTER TABLE tableName modify(columnName 类型);例如alter table test modify(name varchar(255)); Oracle/S

ORACLE—001:Alter之增加字段,修改字段类型

--积累工作中用到的SQL 1.增加和删除一列 写法: --增加一列      alter table  表名 add  列名 类型;      --删除一列      alter table  表名 drop column 列名 ; 例如: --增加一列      alter table  TB_TEMP add  COL_ID  VARCHAR2(40);      --删除一列      alter table TB_TEMP  drop column COL_ID  ; 2.修改列的类型

oracle如何修改字段类型(2)

在一次做开发的时候,遇到需要将数据表的字段类型由number改成varchar,可是该字段又有值, 用  alter table t-name modify cname newType;会报错. 话说,当时在网上没找到合适的解决办法,很苦恼! 今天在博客园看到解决这个问题的办法,很nice,分享! 当要修改的字段有值的时候,不能更改字段类型: 两种解决办法: 1.   > 新增一列,列类型与要修改的新类型一致: >将旧列的值赋给新列(需强制类型转换): > update tname se