oracle中怎样修改varchar2字段为clob字段,sql语句改怎么写呢?
解决方案 »
- 关于oracle的存储过程的问题
- wm_concat能取到合并行后值的数量吗,或者如何取字段中以逗号分割的字符的数量?
- 菜鸟的第一个存储过程_错误求解
- ORACLE817的那些特性在ORACLE9I中不再支持
- 帮我看一个SQL,为什么能这么写?
- RAC的简单物理部署问题
- 分析一下这个ORA-01747: invalid user.table.column, table.column, or column specification
- 请问:在select的时候怎样将两个字段合并为一个字段
- sql-plus中的COPY命令(在两个数据库之间拷贝数据)报错!大虾帮忙!
- 高分求好書!
- 为什么网上有的Oracle10G安装文件600M,有的2G
- oracle em登陆出错的!!!!!!!!!
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
二:有数据的话,先创建一个表将表中数据备份出来,然后在将此列值类型更改掉,清空列值,然后在插入回来。