Sql 更改包含数据的表中列的大小
可能重复:Sql 更改包含数据的表中列的大小,sql,oracle,Sql,Oracle,可能重复: 在Oracle中(9i及以上版本) 我想将表employee的列ename从varchar2(30)改为varchar2(10) 案例1:如果表中的数据具有包含长度小于10个字符的值的ename列(我的意思是它可以轻松地放入varchar2(10)),oracle是否允许这样做 案例2:如果表中的数据的ename列包含长度大于10个字符的值(我的意思是它不能放入varchar2(10))-oracle不允许这样做吗 案例1:是的,这很好用 案例2:这将失败,错误为ORA-0144
在Oracle中(9i及以上版本) 我想将表employee的列ename从varchar2(30)改为varchar2(10)
- 案例1:如果表中的数据具有包含长度小于10个字符的值的ename列(我的意思是它可以轻松地放入varchar2(10)),oracle是否允许这样做
- 案例2:如果表中的数据的ename列包含长度大于10个字符的值(我的意思是它不能放入varchar2(10))-oracle不允许这样做吗
分享和享受。我不确定自己是否理解问题所在。如果您试图将列的大小减小到
VARCHAR2(10)
,对于具有20字节ENAME
值的员工,您希望发生什么?是否要截断第10个字节后的数据?类似于@Justin Cave。。。是的,我对此没有任何问题……因为很明显,如果我将大小更改为varchar2(10)…数据将被截断为具有20字节的ENAME…oracle是否会对此更改发出某种类型的警告或执行此操作否,您的数据不能大于列中某列的大小。否则有什么意义?如果您的数据确实大于列的大小,为什么要减小它?@jain007:我认为XQBERT
提到的链接解决了您的问题,首先将所有数据超过10字节的列更新为10字节,然后更改您的列…如果我需要案例2工作,然后我需要接着是xQbertYes-您需要截断任何长度大于要将列收缩到的大小的值。或者更好,研究截断该数据的影响。如果你能做一个过程,让信息像以前一样丰富,那么就去做吧。例如,将关键字转换为它们的简短版本。e、 g:示例->例如,如果没有研究影响,则丢弃信息是不好的。
Alter table employee
MODIFY ename varchar2(10);