Скажем, у меня есть таблица temp с столбцом col1, определяемая как VARCHAR(80). Я хочу уменьшить его до VARCHAR(60).
Ответ 1
В DB2 9.7 для Linux/UNIX/Windows вы можете использовать оператор ALTER TABLE для уменьшения длины столбца, считая, что никакие значения в столбце не превышают новый размер столбца:
ALTER TABLE temp
ALTER COLUMN col1 SET DATA TYPE VARCHAR(60);
Если любые значения в столбце превышают желаемый размер, вы должны сначала обработать его.
В предыдущих версиях DB2 для Linux/UNIX/Windows вы не могли использовать этот метод для уменьшения размера столбца. Вам либо пришлось отбросить/воссоздать таблицу, либо пройти процесс добавления столбца, копирования данных и удаления старого столбца.
Хотя, как отметил Ян, возможно, использовать инструкции ALTER для уменьшения длины столбца в DB для LUW, это не относится к DB2 для z/OS начиная с версии 10.
В соответствии с эта таблица поддерживаются только типы данных от VARCHAR(n) до VARCHAR(n+x), что является обломком.
Ответ 3
Вы не можете уменьшить длину столбца. Чтобы добиться этого, вы должны
создайте новую таблицу с вашими данными и с атрибутом, который вы хотите.
Удалить старую таблицу
Переименовать новую таблицу
Если вы хотите увеличить длину, это возможно с помощью команды ALTER
ALTER TABLE temp
ALTER COLUMN col1
SET DATA TYPE VARCHAR(60)