web-dev-qa-db-ja.com

DB2で列の長さを減らす方法

DB2で列の長さを減らす方法はありますか?

たとえば、列_col1_がVARCHAR(80)として定義されているテーブルtempがあるとします。 VARCHAR(60)に減らしたいです。

16
Vicky

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では、この方法を利用して列のサイズを縮小することはできませんでした。テーブルを削除または再作成するか、列を追加し、データをコピーし、古い列を削除するプロセスを実行する必要がありました。

26
Ian Bjorhovde

イアンの答えと Clockwork-Museの発言 への追加として:

Ianが指摘したように、DB [LUW]の列の長さを減らすためにALTERステートメントを使用することは可能ですが、バージョン10以降のDB2 for z/OSには当てはまりません。

この表 によると、VARCHAR(n)からVARCHAR(n+x)へのデータ型の変更のみがサポートされています。 。

3
GreenhouseVeg

列の長さを短くすることはできません。この影響を達成するには、

  • データと必要な属性を持つ新しいテーブルを作成します。
  • 古いテーブルを削除
  • 新しいテーブルの名前を変更します

長さを増やしたい場合は、ALTERコマンドで可能です。

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