141 votes

comment faire pour modifier la colonne de type de données de caractère numérique dans postgresql 8.4

Je suis en utilisant la requête suivante pour modifier le type de données d'une colonne de caractère(20) numérique(10,0) mais l'obtention d'erreur:

ALTER TABLE presales ALTER COLUMN code TYPE numeric(10,0); 

ERREUR: la colonne "code" ne peut pas être lancé de type numérique

251voto

mu is too short Points 205090

Vous pouvez essayer d'utiliser USING:

L'option USING clause spécifie comment calculer la nouvelle valeur de la colonne à partir de l'ancien; si omis, la valeur par défaut de conversion est le même qu'une cession projetée à partir de vieux type de données à nouveau. Un USING clause doit être fournie si il n'y a pas d'implicite ou de la cession projetée à partir de l'ancien vers le nouveau type.

Donc, ce serait (selon vos données):

ALTER TABLE presales ALTER COLUMN code TYPE numeric(10,0) USING code::numeric;

Ceci ne fonctionnera pas si vous avez quelque chose en code qui ne peut pas être converti en numérique; si l'AIDE ne parvient pas, vous aurez à nettoyer les données non numériques à la main avant de changer le type de la colonne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X