在oracle中,可以利用“ALTER table MODIFY”語句來轉(zhuǎn)換字段類型,語法為“ALTER TABLE table_name MODIFY(字段名稱 新數(shù)據(jù)類型)”。
本教程操作環(huán)境:Windows7系統(tǒng)、Oracle 11g版、Dell G3電腦。
在oracle中,可以利用“ALTER TABLE MODIFY”語句來來更改現(xiàn)有列的定義,例如修改字段類型。
語法格式:
ALTER?TABLE?table_name?MODIFY(字段名稱?新數(shù)據(jù)類型)
例如:有一個表名為tb,字段段名為name,數(shù)據(jù)類型nchar(20)。
1、假設(shè)字段數(shù)據(jù)為空,則不管改為什么字段類型,可以直接執(zhí)行:
alter?table?tb?modify?(name?nvarchar2(20));
2、假設(shè)字段有數(shù)據(jù),則改為nvarchar2(20)可以直接執(zhí)行:
alter?table?tb?modify?(name?nvarchar2(20));
3、假設(shè)字段有數(shù)據(jù),則改為varchar2(40)執(zhí)行時會彈出:“ORA-01439:要更改數(shù)據(jù)類型,則要修改的列必須為空”,這時要用下面方法來解決這個問題:
/*修改原字段名name為name_tmp*/ alter?table?tb?rename?column?name?to?name_tmp; /*增加一個和原字段名同名的字段name*/ alter?table?tb?add?name?varchar2(40); /*將原字段name_tmp數(shù)據(jù)更新到增加的字段name*/ update?tb?set?name=trim(name_tmp); /*更新完,刪除原字段name_tmp*/ alter?table?tb?drop?column?name_tmp;
總結(jié):
1、當(dāng)字段沒有數(shù)據(jù)或者要修改的新類型和原類型兼容時,可以直接modify修改。
2、當(dāng)字段有數(shù)據(jù)并用要修改的新類型和原類型不兼容時,要間接新建字段來轉(zhuǎn)移。
推薦教程:《Oracle教程》
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END
喜歡就支持一下吧
相關(guān)推薦