如何oracle修改字段型別

2021-06-10 02:22:20 字數 1006 閱讀 2414

因為業務需要,修要修改某個字段資料型別有number(5),變為number(5,2)型

要是沒有資料的話直接用以下語句即可

alter   table tb_test modify permile number(5,2);

但是有資料的話 就不能用上面方法了,

alter table tb_test add permile_temp number(5,2)

update tb_test set permile_temp=permile;

alter table drop column permile;

alter table test rename column permile_temp to permile;

這種方法會使列名發生變化,而且字段順序增加 有可能發生行遷移,對應用程式會產生影響

以下方法是比較好的方法

不用使列名發生變化 也不會發生表遷移,但這個有個缺點是表要更新兩次

如果資料量較大的話 產生的undo和redo更多 ,前提也是要停機做

以下是指令碼:

alter table tb_test add permile_temp number;

add/modify columns

alter table tb_test modify permile null;

update tb_test set permile_temp=permile,permile=null;

commit;

alter table tb_test modify permile number(5,2);

update tb_test set permile=permile_temp,permile_temp=null;

commit;

alter table tb_test drop column permile_temp;

alter table tb_test modify permile not null;

select * from tb_test ;

Oracle 如何修改字段型別

alter table 表名 modify 列名 varchar2 2000 本方法只支援同型別間轉換 如 varchar2 255 轉成 varchar2 2000 如果有資料那就要麻煩一些了,大體思路如下 首先將要更改型別的欄位名改名以備份,然後新增乙個與要更改型別的欄位名同名的字段 原欄位已經...

Oracle修改字段型別

有乙個表名為tb,欄位段名為name,資料型別nchar 20 1 假設字段資料為空,則不管改為什麼字段型別,可以直接執行 alter table tb modify name nvarchar2 20 2 假設欄位有資料,則改為nvarchar2 20 可以直接執行 alter table tb ...

Oracle 修改字段型別

1,如果只是單純的把字段改大,比如numeric 16,2 numeric 16,4 可直接 alter table 表名 modify 欄位名 numeric 16,4 2,由於需求變動,現要將乙個型別number 8,2 的字段型別改為 char。大體思路如下 將要更改型別的欄位名改名以備份,然...