DB2 查看表結構使用 DESCRIBE TABLE,修改欄位型別使用 ALTER TABLE ... ALTER COLUMN SET DATA TYPE。大量資料變更後建議執行 REORG TABLE 優化。
DESCRIBE TABLE YUS.KASHIDASHI_CHOSHO_MEISAI
輸出包含:欄位名、資料型別、長度、刻度、是否可空、預設值、隱藏/身分欄位標記。
-- 修改 Rate 欄位為 DECIMAL(4,2) (總長 4 位,小數 2 位)
ALTER TABLE ProductTable
ALTER COLUMN Rate SET DATA TYPE DECIMAL(4,2);
REORG TABLE ProductTable
REORG 重組表物理儲存,回收空間、更新統計、消除碎片,提升後續查詢效能。
| 操作 | 是否支援 | 說明 |
|---|---|---|
| 數值型擴大精度 (INT → BIGINT, DEC(5,2) → DEC(10,4)) | ✅ | 安全 |
| 字串型加長 (VARCHAR(10) → VARCHAR(50)) | ✅ | 安全 |
| 相容型別轉換 (CHAR → VARCHAR, SMALLINT → INTEGER) | ✅ | 隱含轉換安全 |
| 縮減長度/精度 (VARCHAR(50) → VARCHAR(10)) | ❌ | 資料可能截斷,需先清理資料 |
| 不相容型別 (VARCHAR → INTEGER, DATE → TIMESTAMP) | ❌ | 需建新欄位遷移資料 |
| 修改 NULL/NOT NULL | 另用語法 | ALTER COLUMN SET/DROP NOT NULL |
DESCRIBE TABLE ProductTable 確認現狀SELECT MAX(LENGTH(Rate)) FROM ProductTable 檢查實際資料長度ALTER TABLE ProductTable ALTER COLUMN Rate SET DATA TYPE DECIMAL(4,2)REORG TABLE ProductTable (大表建議)RUNSTATS ON TABLE ProductTable 更新統計-- Oracle
ALTER TABLE ProductTable MODIFY Rate NUMBER(4,2);
-- DB2
ALTER TABLE ProductTable ALTER COLUMN Rate SET DATA TYPE DECIMAL(4,2);
掌握 DESCRIBE、ALTER COLUMN SET DATA TYPE、REORG 三步走,即可安全完成欄位型別演進。