1. 程式人生 > >Oracle修改欄位型別方法總結

Oracle修改欄位型別方法總結

有一個表名為tb,欄位段名為name,資料型別nchar(20)。

1、假設欄位資料為空,則不管改為什麼欄位型別,可以直接執行:
alter table tb modify (name nvarchar2(20));

2、假設欄位有資料,則改為nvarchar2(20)可以直接執行:
alter table tb modify (name nvarchar2(20));

3、假設欄位有資料,則改為varchar2(40)執行時會彈出:“ORA-01439:要更改資料型別,則要修改的列必須為空”,這時要用下面方法來解決這個問題

/*修改原欄位名name為name_tmp*/
alter table tb rename column name to name_tmp;

/*增加一個和原欄位名同名的欄位name*/
alter table tb add name varchar2(40);

/*將原欄位name_tmp資料更新到增加的欄位name*/
update tb set name=trim(name_tmp);

/*更新完,刪除原欄位name_tmp*/
alter table tb drop column name_tmp;

總結:
1、當欄位沒有資料或者要修改的新型別和原型別相容時,可以直接modify修改。
2、當欄位有資料並用要修改的新型別和原型別不相容時,要間接新建欄位來轉移。