有没有办法减少DB2中的列长度?
假设我有一个表格col1
定义为VARCHAR(80)
的表格。我想将其缩减为VARCHAR(60)
。
答案 0 :(得分:21)
在DB2 9.7 for Linux / UNIX / Windows中,您可以使用ALTER TABLE语句来减少列的长度,假设列中的值不超过新列的大小:
ALTER TABLE temp
ALTER COLUMN col1 SET DATA TYPE VARCHAR(60);
如果列中的任何值超出所需的大小,则必须先处理该值。
在以前版本的DB2 for Linux / UNIX / Windows中,您无法使用此方法来减小列的大小。您必须删除/重新创建表,或者完成添加列,复制数据和删除旧列的过程。
答案 1 :(得分:3)
作为Ian答案和Clockwork-Muse's remark的补充:
正如Ian指出的那样,虽然有可能使用ALTER
语句来减少DB中LUW的列长度,但从版本10开始,DB2 for z / OS就不是这种情况。
根据this table,只支持从VARCHAR(n)
到VARCHAR(n+x)
的数据类型更改,这是一个无赖。
答案 2 :(得分:1)
您无法减少列的长度。要实现这一目标,你应该
如果您想增加长度,可以使用ALTER
命令<
ALTER TABLE temp
ALTER COLUMN col1
SET DATA TYPE VARCHAR(60)