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的時候注意數據類型轉換即可。
