UNIT_PRICE :資料庫原先類型為: NUMBER(18,4) AMOUNT : 資料庫原先類型為: NUMBER(18,4) 如果直接進行修改會報錯,因為原先欄位中已經有數據了。 ALTER TABLE CLOUD_RELEASE.CONTRACT_PRODUCT_ITEM MODIFY(U ...
UNIT_PRICE :資料庫原先類型為: NUMBER(18,4)
AMOUNT : 資料庫原先類型為: NUMBER(18,4)
如果直接進行修改會報錯,因為原先欄位中已經有數據了。
ALTER TABLE CLOUD_RELEASE.CONTRACT_PRODUCT_ITEM MODIFY(UNIT_PRICE NUMBER(18,6));
ALTER TABLE CLOUD_RELEASE.CONTRACT_PRODUCT_ITEM MODIFY(AMOUNT NUMBER(18,6));
-- 需求:將以上的兩個欄位的數據類型保留位數修改為6位,該表中已有數據,而且這兩個欄位中也有值(原先的數據需要保留),方法如下:
--1:新增欄位,數據類型中保留位數為6
ALTER TABLE CLOUD_RELEASE.CONTRACT_PRODUCT_ITEM
ADD (UNIT_PRICES NUMBER(18,6));
ALTER TABLE CLOUD_RELEASE.CONTRACT_PRODUCT_ITEM
ADD (AMOUNTS NUMBER(18,6));
--欄位類型備註
COMMENT ON COLUMN CONTRACT_PRODUCT_ITEM.UNIT_PRICES IS '單價不含稅(保留6位)';
COMMENT ON COLUMN CONTRACT_PRODUCT_ITEM.AMOUNTS IS '金額不含稅(保留6位)';
--2:將原來欄位中的數據內容複製到新欄位中
註意:我這裡新的和舊的數據類型是相同的所以不需要轉換,如果不相同就需要類型轉換
update CONTRACT_PRODUCT_ITEM
set UNIT_PRICES=UNIT_PRICE,AMOUNTS=AMOUNT
--3:刪除原來的欄位
ALTER TABLE CLOUD_RELEASE.CONTRACT_PRODUCT_ITEM DROP COLUMN UNIT_PRICE;
ALTER TABLE CLOUD_RELEASE.CONTRACT_PRODUCT_ITEM DROP COLUMN AMOUNT;
--4:將新增的欄位重命名為原來的欄位
ALTER TABLE CLOUD_RELEASE.CONTRACT_PRODUCT_ITEM
RENAME COLUMN UNIT_PRICES TO UNIT_PRICE;
ALTER TABLE CLOUD_RELEASE.CONTRACT_PRODUCT_ITEM
RENAME COLUMN AMOUNTS TO AMOUNT;
通過以上步驟就可以修改數據類型了,但是在步驟2的時候註意數據類型轉換即可。