2012-03-06 29 views
12

Có cách nào để giảm độ dài cột trong DB2 không?Cách giảm chiều dài cột trong DB2

Giả sử tôi có nhiệt độ bảng với cột col1 được định nghĩa là VARCHAR(80). Tôi muốn giảm nó xuống VARCHAR(60).

Trả lời

16

Trong DB2 9.7 cho Linux/UNIX/Windows, bạn có thể sử dụng câu lệnh ALTER TABLE để giảm độ dài của cột, giả định rằng không có giá trị nào trong cột vượt quá kích thước cột mới:

ALTER TABLE temp 
    ALTER COLUMN col1 SET DATA TYPE VARCHAR(60); 

Nếu bất kỳ giá trị nào trong cột vượt quá kích thước mong muốn bạn phải xử lý trước tiên.

Trong các phiên bản trước của DB2 cho Linux/UNIX/Windows, bạn không thể sử dụng phương pháp này để giảm kích thước của cột. Bạn phải bỏ/tạo lại bảng, hoặc thực hiện quy trình thêm cột, sao chép dữ liệu và xóa cột cũ.

1

Bạn không thể giảm độ dài của cột. Để đạt được điều này ảnh hưởng đến bạn nên

  • tạo bảng mới với dữ liệu của bạn và với thuộc tính bạn muốn.
  • Xóa bảng cũ
  • Đổi tên bảng mới

Nếu bạn muốn tăng chiều dài, có thể với ALTER lệnh

ALTER TABLE temp 
     ALTER COLUMN col1 
     SET DATA TYPE VARCHAR(60) 
+2

... Ngoại trừ bạn cũng có thể sử dụng lệnh 'ALTER TABLE' để _shorten_ cột. Tại sao bạn mong đợi rằng một lệnh có thể _increase_ chiều dài sẽ không thể sử dụng để _decrease_ nó là tốt? Cú pháp của bạn là đúng, và phải là câu lệnh mà anh ta cần. Mặc dù, tất nhiên, dữ liệu có thể bị cắt ngắn. –

2

Như một sự bổ sung cho câu trả lời và Clockwork-Muse's remark Ian:

Mặc dù có thể, như Ian chỉ ra, để sử dụng ALTER báo cáo để giảm chiều dài cột trong DB cho LUW, đây không phải là trường hợp trong DB2 cho z/HỆ ĐIỀU HÀNH kể từ phiên bản 10.

Theo this table, chỉ thay đổi loại dữ liệu từ VARCHAR(n) thành VARCHAR(n+x) được hỗ trợ, đó là một con số thấp.

Các vấn đề liên quan