alter table table_name modify col_name clob;但有可能有些类型间不能转换,尤其是列中有数据的
我试过楼上的方法了,oracle 10G 提示:数据类型的更改无效
有数据库的小插件吗?PL/SQL,可以直接修改数据类型的。
备份-〉drop column -〉add -〉导入
也可以不备份 新建一个clob字段 tempclm; update set oldclm=tempclm; drop oldclm; 修改tempclm字段名。
要是没有数据的话直接用以下语句即可 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 column permile; alter table test rename column permile_temp to permile; 这种方法会使列名发生变化,而且字段顺序增加 有可能发生行迁移,对应用程序会产生影响 以下方法是比较好的方法 不用使列名发生变化 也不会发生表迁移,但这个有个缺点是表要更新两次 如果数据量较大的话 产生的undo和redo更多 ,前提也是要停机做 要是不停机的话 ,也可以采用在线重定义方式来做 以下是脚本: alter table tb_test add permile_temp number; Add/modify columns alter table tb_test modify PERMILE null; update tb_test set permile_temp=permile,permile=null; commit; alter table tb_test modify permile number(5,2); update tb_test set permile=permile_temp,permile_temp=null; commit; alter table tb_test drop column permile_temp; alter table tb_test modify PERMILE not null; select * from tb_test ;
最简单的方式,先add 一个column, 赋值,再drop column SQL> create table t(id int, col2 varchar(32));Table created.SQL> insert into t values(1, 'iihero');1 row created.SQL> alter table t add col3 clob;Table altered.SQL> update t set col3 = col2;1 row updated.SQL> alter table t drop column col2;Table altered.SQL> select * from t; ID ---------- COL3 -------------------------------------------------------------------------------- 1 iihero
modify col_name clob;但有可能有些类型间不能转换,尤其是列中有数据的
新建一个clob字段 tempclm;
update set oldclm=tempclm;
drop oldclm;
修改tempclm字段名。
要是没有数据的话直接用以下语句即可 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 column permile; alter table test rename column permile_temp to permile; 这种方法会使列名发生变化,而且字段顺序增加 有可能发生行迁移,对应用程序会产生影响 以下方法是比较好的方法 不用使列名发生变化 也不会发生表迁移,但这个有个缺点是表要更新两次 如果数据量较大的话 产生的undo和redo更多 ,前提也是要停机做 要是不停机的话 ,也可以采用在线重定义方式来做 以下是脚本: alter table tb_test add permile_temp number; Add/modify columns alter table tb_test modify PERMILE null; update tb_test set permile_temp=permile,permile=null; commit; alter table tb_test modify permile number(5,2); update tb_test set permile=permile_temp,permile_temp=null; commit; alter table tb_test drop column permile_temp; alter table tb_test modify PERMILE not null; select * from tb_test ;
SQL> create table t(id int, col2 varchar(32));Table created.SQL> insert into t values(1, 'iihero');1 row created.SQL> alter table t add col3 clob;Table altered.SQL> update t set col3 = col2;1 row updated.SQL> alter table t drop column col2;Table altered.SQL> select * from t; ID
----------
COL3
--------------------------------------------------------------------------------
1
iihero
二:有数据的话,先创建一个表将表中数据备份出来,然后在将此列值类型更改掉,清空列值,然后在插入回来。