web-dev-qa-db-fra.com

Façon de réduire la longueur de colonne dans DB2

Existe-t-il un moyen de réduire la longueur de colonne dans DB2?

Disons que j'ai un temp de table avec la colonne col1 Définie comme VARCHAR(80). Je veux le réduire à VARCHAR(60).

16
Vicky

Dans DB2 9.7 pour Linux/UNIX/Windows, vous pouvez utiliser l'instruction ALTER TABLE pour réduire la longueur d'une colonne, en supposant qu'aucune valeur de la colonne ne dépasse la nouvelle taille de colonne:

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

Si des valeurs de la colonne dépassent la taille souhaitée, vous devez d'abord gérer cela.

Dans les versions précédentes de DB2 pour Linux/UNIX/Windows, vous ne pouviez pas utiliser cette méthode pour réduire la taille de la colonne. Vous devez soit supprimer/recréer la table, soit passer par un processus d'ajout d'une colonne, de copie des données et de suppression de l'ancienne colonne.

26
Ian Bjorhovde

En complément de la réponse d'Ian et Remarque de Clockwork-Muse :

Bien qu'il soit possible, comme l'a souligné Ian, d'utiliser les instructions ALTER pour réduire la longueur des colonnes dans DB for LUW, ce n'est pas le cas dans DB2 for z/OS à partir de la version 10.

Selon ce tablea , seules les modifications de type de données de VARCHAR(n) à VARCHAR(n+x) sont prises en charge, ce qui est une déception.

3
GreenhouseVeg

Vous ne pouvez pas réduire la longueur d'une colonne. Pour atteindre cet effet, vous devez

  • créez une nouvelle table avec vos données et avec l'attribut que vous souhaitez.
  • Supprimer l'ancienne table
  • Renommer la nouvelle table

Si vous voulez augmenter la longueur, c'est possible avec la commande ALTER

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