改變表中非空欄位的型別
改變表中非空欄位的型別
在資料庫中,經常因為專案開發前期資料庫表設計不合理,在系統執行試執行期間,表的欄位不滿足資料的需要,需要改變表欄位的型別。如欄位number(7,2)需要改變成varchar2(50),資料會有些不一樣(如:12.00的資料會變成 12 )。如果表中欄位存在資料,則不能更改。為了成功更改,需要清空該欄位的資料,需要在表中增加一個臨時的欄位,用來存放需要修改欄位型別的資料。
比如:把test表的FORMATION_NUM_TEMP欄位 number(7,2)型別改成varchar2(50)
--1先在test表增加一個臨時欄位
alter table test add (FORMATION_NUM_TEMP number(7,2));
comment on column test.formation_num_temp is '臨時欄位';
--2把需要修改欄位型別的欄位資料存放到臨時欄位中
update test t set t.formation_num_temp=t.formation_num;
commit;
--3清空formation_num欄位的資料,這樣則可以改變該欄位的型別了
Update test t Set t.formation_num =null;
commit;
--4改變該欄位的型別
alter table test modify formation_num varchar2(50);
--5把臨時欄位的資料放回原來的欄位中,資料會有些不一樣(如:12.00的資料會變成 12 )
Update test t Set t.formation_num =t.formation_num_temp;
Commit;
--6刪除臨時欄位
alter table test drop column formation_num_temp;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-503901/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 修改表的欄位型別型別
- MySQL欄位新增註釋,但不改變欄位的型別MySql型別
- oracle檢視該使用者的所有表名字、表註釋、欄位名、欄位註釋、是否為空、欄位型別Oracle型別
- 改變表的欄位順序dbms_REDEFINITION
- Sqlserver修改線上表的表欄位型別SQLServer型別
- impdp匯入包含xmltype型別欄位空表報錯問題XML型別
- 表中已有資料,將表中某個欄位為空的改為非空
- mysql表操作(alter)/mysql欄位型別MySql型別
- 含LONG型別欄位的表無法MOVE型別
- oracle的欄位型別Oracle型別
- sqlserver查詢一個庫所有表的欄位名及欄位型別SQLServer型別
- 【轉】修改表的欄位資料型別的方法資料型別
- 保留兩位小數:資料庫欄位型別NUMBER,Java欄位型別Double型別資料庫型別Java
- OCM實驗-建立含特殊欄位型別的表型別
- sql小筆記(增刪改查——新增列、修改表名、列的欄位型別等)SQL筆記型別
- MongoDB更改欄位型別MongoDB型別
- 支援 enum 型別的欄位允許為空插入資料庫型別資料庫
- MongoDB中的欄位型別IdMongoDB型別
- oracle 修改欄位型別的方法Oracle型別
- lob欄位表空間遷移
- Oracle-不刪表資料,修改欄位型別Oracle型別
- oracle 線上重新定義,普通表改變分割槽表,分割槽表可以更改型別、分割槽欄位等Oracle型別
- sql語句修改欄位型別和增加欄位SQL型別
- (轉) JAVA,Mybatis,Oracle變數型別與欄位型別不一致,分割槽表全掃的優化JavaMyBatisOracle變數型別優化
- MySQL欄位型別最全解析MySql型別
- date、timestamp欄位型別型別
- MySQL欄位型別小記MySql型別
- 資料欄位型別匹配型別
- sqlite sql 修改欄位型別SQLite型別
- 修改欄位資料型別的方法資料型別
- [提問交流]建立模型,新增屬性,欄位型別如何設定2位小數的欄位型別模型型別
- 查詢mysql某張表中的所有資料(欄位)型別MySql型別
- ORACLE 10G下LOB_DATA欄位型別佔滿臨時表空間問題Oracle 10g型別
- 主流資料庫欄位型別轉.Net型別的方法資料庫型別
- 【mongo】mongo 欄位型別互轉Go型別
- [轉]MySQL 欄位型別參考MySql型別
- 欄位型別檢測指令碼型別指令碼
- 比較所有的欄位型別型別