oracle如何修改字段類型(oracle總體知識2)


在一次做開發的時候,遇到需要將數據表的字段類型由number改成varchar,可是該字段又有值,

用  alter table t-name modify cname newType;會報錯。

話說,當時在網上沒找到合適的解決辦法,很苦惱!

今天在博客園看到解決這個問題的辦法,很nice,分享!

當要修改的字段有值的時候,不能更改字段類型

兩種解決辦法:    

             1、   > 新增一列,列類型與要修改的新類型一致;       

                     >將舊列的值賦給新列(需強制類型轉換);       

                     > update tname set cname_new=cast(cname_old as 新類型)       

                     >刪除舊列。    

這種辦法,改變了列在表里面的位置。

            2、      >新增一列,列類型與舊列相同;       

                      >將舊列的值賦給新列,舊列的值變為null;       

                      update tname set cname_new =cname_old;       

                     > 更改舊列的字段類型(此時為null,可以修改)       

                      alter table tname modify cname_old  newType;       

                     > 將新列的值賦給舊列;       

                      update tname set cname_old=cname_new;       

                      >刪除新列。

相關sql語句:

      

                      查看oracle版本:select * from v$version;

                      更新字段名:alter table 表名 rename column 舊列名 to 新列名;

                      新增字段:   alter table 表名 add 列名 列類型;

                      新增字段並賦值: alter table 表名 add 列名 列類型 default 默認值;      

                      刪除字段:  alter table 表名 drop column 列名;

                      修改字段值:update 表名 set 列名=value where ...

                      修改字段類型: alter table 表名 modify 列名 類型;

參考:http://www.cnblogs.com/david-zhang-index/archive/2012/04/10/2441015.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM