更改包含数据的表中列的大小

Lea*_*ner 48 sql oracle

可能重复:
如何在Oracle中缩短varchar2字段?

在Oracle(9i及以上)

 Alter table employee  
 MODIFY ename varchar2(10);
Run Code Online (Sandbox Code Playgroud)

我想将表employee的列ename从varchar2(30)更改为varchar2(10)

  • 情况1:如果表中的数据具有包含长度小于10个字符的值的ename列(我的意思是它可以很容易地适合varchar2(10)) - 这是否允许oracle?

  • 情况2:如果表中的数据包含的ename列包含长度大于10 char的值(我的意思是它不能适合varchar2(10)) - 这是不是oracle允许的?

Bob*_*ica 42

案例1:是的,这很好用.

情况2:这将失败并显示错误ORA-01441:无法减少列长度,因为某些值太大.

分享和享受.

  • ...如果我需要案例2工作,那么我是否需要关注http://stackoverflow.com/questions/8404194/how-to-make-a-varchar2-field-shorter-in-oracle/8404240 #8404240由xQbert (3认同)
  • 或者更好的是,研究截断数据的影响.如果您可以创建一个让信息像以前一样丰富的流程,那就去做吧.例如,将关键字转换为短版本.例如:示例 - >例如,如果没有研究影响,丢弃信息就不好了. (3认同)
  • 是 - 您需要截断任何长度大于缩小列大小的值. (2认同)