oracle修改字段精度

2021-07-15 22:36:56 字數 867 閱讀 5512

我們在設計資料庫時難免會因為最初的需求導致資料庫欄位的設定不能滿足實際的需求,如果我們是在新建之初表內無資料時我們可以直接重新建,但是如果有資料時就難免會遇到一些其他問題,例如我們修改數值型的精度時,如果我們是想將精度調小,可以直接實現,如果把精度調大會彈出請清空字段內容後重試的提示。

有乙個表名為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、當字段有資料並用要修改的新型別和原型別不相容時,要間接新建欄位來轉移。

Oracle 修改欄位的精度和長度

首先,新增乙個符合進度和長度符合要求的字段。alter table tb test add name temp number 19,4 增加字段注釋。comment on column tb test.name temp is 名稱 將原始name列的值全都更新到name temp 原始列可以不設定...

oracle修改字段

oracle的字符集修改 查詢oracle服務端的字符集 simplified chinese china.us7ascii。可以用以下語句來查詢 select userenv language from dual 結果如下圖 img 由日誌可以看出dmp檔案的字符集是 zhs16gbk img 可...

Oracle修改字段型別

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