最近學(xué)習(xí)了Oracle修改字段類(lèi)型方法,留做記錄。
有一個(gè)表名為tb,字段段名為name,數(shù)據(jù)類(lèi)型nchar(20)。
1、假設(shè)字段數(shù)據(jù)為空,則不管改為什么字段類(lèi)型,可以直接執(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í)行時(shí)會(huì)彈出:“ORA-01439:要更改數(shù)據(jù)類(lèi)型,則要修改的列必須為空”,這時(shí)要用下面方法來(lái)解決這個(gè)問(wèn)題:
/*修改原字段名name為name_tmp*/
alter table tb rename column name to name_tmp;
/*增加一個(gè)和原字段名同名的字段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)字段沒(méi)有數(shù)據(jù)或者要修改的新類(lèi)型和原類(lèi)型兼容時(shí),可以直接modify修改。
2、當(dāng)字段有數(shù)據(jù)并用要修改的新類(lèi)型和原類(lèi)型不兼容時(shí),要間接新建字段來(lái)轉(zhuǎn)移。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- 關(guān)于oracle中clob字段查詢(xún)慢的問(wèn)題及解決方法
- PHP處理Oracle的CLOB實(shí)例
- 向Oracle數(shù)據(jù)庫(kù)的CLOB屬性插入數(shù)據(jù)報(bào)字符串過(guò)長(zhǎng)錯(cuò)誤
- 解析jdbc處理oracle的clob字段的詳解
- oracle數(shù)據(jù)庫(kù)中如何處理clob字段方法介紹
- Oracle 插入超4000字節(jié)的CLOB字段的處理方法
- Oracle的CLOB大數(shù)據(jù)字段類(lèi)型操作方法