Is there a way to decrease the column length in DB2?
Say I have a table temp with column col1
defined as VARCHAR(80)
. I want to reduce it to VARCHAR(60)
.
Is there a way to decrease the column length in DB2?
Say I have a table temp with column col1
defined as VARCHAR(80)
. I want to reduce it to VARCHAR(60)
.
In DB2 9.7 for Linux/UNIX/Windows, you can use the ALTER TABLE statement to reduce the length of a column, assuming that no values in the column exceed the new column size:
ALTER TABLE temp
ALTER COLUMN col1 SET DATA TYPE VARCHAR(60);
If any values in the column exceed the desired size you must handle that first.
In previous versions of DB2 for Linux/UNIX/Windows, you could not utilize this method to reduce the size of the column. You either had to drop/recreate the table, or go through a process of adding a column, copying data, and removing the old column.
As an addition to Ian's answer and Clockwork-Muse's remark:
While it is possible, as Ian pointed out, to use ALTER
statements to reduce column length in DB for LUW, this is not the case in DB2 for z/OS as of version 10.
According to this table, only data type changes from VARCHAR(n)
to VARCHAR(n+x)
are supported, which is a bummer.
You cannot reduce the length of a column. To achieve this affect you should
If you want to increase the length, it is possible with ALTER
command
ALTER TABLE temp
ALTER COLUMN col1
SET DATA TYPE VARCHAR(60)