oracle截断列长度的方法:alter

Create  table  t_temp (keyed number(4) not null);

将字段设改为可空

Alter table modify (keyid number(4) null) -- null 必须写

将字段设改为非空

Alter table modify(keyid number(4) not null);

这里必须先保证字段中各个值非空,否则会报如下错误 ora-02296

 

 

ora-02296:cannot enable(..) - null values found

 

 

在修改的字段非空的情况下,是不可以对其字段的长度减小的

否则报 ora-01440 错误

 

oracle 下如何将一个非空字段截断

建表

Create table t_tm (keyid number(8) not null);

插入数据

Insert into select 11 from dual;

1、  将该字段修改为可空

Alter table t_tm modify(keyid number(8) null);

2、  添加一列

Alter table t_tm add column keyidbak (number(6));

3、  清空keyid字段

Update t_tm set keyid='';

4、  修改改字段长度

Alter talbe t_tm modify(keyid number(6) not null);

5、  移植数据

Update t_tm set keyid = keyidbak;

6、删除备份列

Alter table t_tm drop column keyidbak;

 

以上步骤是保持字段所在的位置不改动,如果可以改动列位置,也可以如下做

1、  修改列名字 alter table t_tm rename column keyid to keyidold;

2、  添加新列 alter table t_tm add keyid number(3) null;

3、  填充新列数据 update t_tm set keyid = keyidold;

4、  删除旧列 alter table t_tm drop column keyidold;

5、  修改列属性 alter table t_tm modify(keyid number(3) not null);

 

也可以:先新增一个备份列 bak,set bak = keyid,然后删除 keyid列,再添加列新列

keyid,再将 set keyid = bak; drop column bak.

 

以上各个方式,大同小异:都必须保证备份列数据的长度不超过目标列长度。

当然修改列长度在实际应用当中不常存在的.

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值