oracle如何修改欄位類型(2)

來源:互聯網
上載者:User

標籤:style   blog   http   color   strong   io   資料   問題   

在一次做開發的時候,遇到需要將資料表的欄位類型由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 t-name rename column cname_old to cname_new;

                      新增欄位:  alter table t-name add cname  type;

                      新增欄位並賦值: alter table t-name add cname type default value;      

                      刪除欄位:  alter table t-name drop column cname;

                      修改欄位值:update tname set cname=value where ...

                      修改欄位類型: alter table t-name modify cname type;

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.