在DB2中减少列长度的方法

时间:2012-03-06 06:40:52

标签: sql database db2

有没有办法减少DB2中的列长度?

假设我有一个表格col1定义为VARCHAR(80)的表格。我想将其缩减为VARCHAR(60)

3 个答案:

答案 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)