如何在 Oracle 10G 中更改列的长度(字符)?

  • 本文关键字:字符 Oracle 10G sql oracle rdbms
  • 更新时间 :
  • 英文 :


我使用的是Oracle 10 G,我想将列大小从30个字符减少到20个字符。表名为member,列为member_name,是一种varchar2(30)数据类型。

我的问题是:有什么疑问吗?如果是,那是什么?

可以就地更改字符串列的长度。但是,如果现有值太大,则会出现错误。所以,只需先缩短列:

update t
set col = substr(col, 1, 20)
where length(col) > 20;

然后:

alter table t modify x varchar2(20)

这里有一个db<gt;不停摆弄

我强烈推荐这种方法,因为它与现有的约束和索引兼容。

如果VARCHAR2列有一些数据,则不能直接减小其大小。

你需要

  1. 创建大小减小的新列
  2. 在新列中填充数据
  3. 删除旧列
  4. 重命名新列

查询应如下所示:

alter table member add member_name_new varchar2(20);
update member set member_name_new = member_name;
alter table member drop column member_name;
alter table member rename column member_name_new to member_name; 

最新更新