oracle中怎样修改varchar2字段为clob字段

yzhao1120 2007-06-20 02:33:29
oracle中怎样修改varchar2字段为clob字段,sql语句改怎么写呢?
...全文
2460 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zkl516321905 2010-11-10
  • 打赏
  • 举报
回复
怎么最近老发些有这么多人问这个问题啊,一:没有数据的话,直接修改alter table table_name modify var_col clob;
二:有数据的话,先创建一个表将表中数据备份出来,然后在将此列值类型更改掉,清空列值,然后在插入回来。
iihero 2010-11-09
  • 打赏
  • 举报
回复
最简单的方式,先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

vanisa 2010-11-09
  • 打赏
  • 举报
回复
有数据的话只能删除之
lxyzxq2008 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 yzhao1120 的回复:]
oracle中怎样修改varchar2字段为clob字段,sql语句改怎么写呢?
[/Quote]

要是没有数据的话直接用以下语句即可

  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 ;

haiqing421 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 haiqing421 的回复:]
引用 6 楼 coolroy2000 的回复:
备份-〉drop column -〉add -〉导入



6楼 好强悍
[/Quote]

发错了,引用失误, 是7楼好强悍
haiqing421 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 coolroy2000 的回复:]
备份-〉drop column -〉add -〉导入
[/Quote]


6楼 好强悍
zhaowing 2007-06-26
  • 打赏
  • 举报
回复
也可以不备份
新建一个clob字段 tempclm;
update set oldclm=tempclm;
drop oldclm;
修改tempclm字段名。
coolroy2000 2007-06-25
  • 打赏
  • 举报
回复
备份-〉drop column -〉add -〉导入
zhaowing 2007-06-25
  • 打赏
  • 举报
回复
有数据的话,只能删掉再新建吧。
rooney_lee 2007-06-21
  • 打赏
  • 举报
回复
有数据库的小插件吗?PL/SQL,可以直接修改数据类型的。
hyrongg 2007-06-20
  • 打赏
  • 举报
回复
我也遇到过,好像只能删除掉再新建
yzhao1120 2007-06-20
  • 打赏
  • 举报
回复
我试过楼上的方法了,oracle 10G 提示:数据类型的更改无效
1982dragon 2007-06-20
  • 打赏
  • 举报
回复
alter table table_name
modify col_name clob;

但有可能有些类型间不能转换,尤其是列中有数据的

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧