PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 19/05/2010 12:02:13

Lika
Membre

Modifier le type d'une colonne : bit(1) en boolean

Bonjour,

Je possède une table contenant beaucoup de données.
Les données d'une colonne sont de type bit(1), les valeurs sont donc 0 ou 1.

Je souhaiterai modifier le type bit(1) en booléens : 0 => false et 1 => true.

J'ai essayé la requête suivante :

ALTER TABLE "ma_table" ALTER COLUMN "ma_colonne" TYPE boolean USING "ma_colonne"::boolean;

J'obtiens l'erreur suivante :
ERREUR: ne peut pas convertir le type bit en boolean

Je ne connais pas bien la clause USING...
Existe-t-il un moyen pour modifier le type de ma colonne ?

Merci d'avance.

Hors ligne

#2 19/05/2010 12:15:48

gleu
Administrateur

Re : Modifier le type d'une colonne : bit(1) en boolean

S'il suffisait d'une simple conversion, il l'aurait fait lui-même. Non, il faut lui indiquer la méthode pour convertir le type bit(1) en booléen. Ceci devrait mieux fonctionner :

alter table ma_table alter column ma_colonne type boolean using ma_colonne::integer=1;

Guillaume.

Hors ligne

#3 19/05/2010 12:26:16

Lika
Membre

Re : Modifier le type d'une colonne : bit(1) en boolean

Ok merci beaucoup. Ça fonctionne.

Hors ligne

#4 09/06/2010 17:44:04

Stanley
Membre

Re : Modifier le type d'une colonne : bit(1) en boolean

Bonjour,
            suite à un import de fichier texte, j'ai une colonne vide appelée "Numero_carte" de type text dans ma table "CARTE101". J'ai renommé la colonne "Numero_carte" en "Id_carte".Je veux maintenant la transformer en type serial (auto incrémentation) mais je n'y arrive pas. J'ai tout de même utilisé la requête suivante:

ALTER TABLE "CARTE101"
ALTER COLUMN "Id_carte" serial;

Et j'obtiens comme réponse:

ERROR:  syntax error at or near "serial"
LIGNE 2 : ALTER COLUMN "Id_carte" serial;
                                                     ^

Pourriez-vous me donner un conseil pouvant me permettre de faire ce changement?
Bien cordialement,

Hors ligne

#5 09/06/2010 19:50:48

gleu
Administrateur

Re : Modifier le type d'une colonne : bit(1) en boolean

serial n'est pas un type réel. C'est juste une aide lorsque vous créez une table pour ajouter une séquence et ajouter une valeur par défaut sur la colonne associée pour que sa valeur soit auto-incrémentée.

Autrement dit, serial est utilisable dans un CREATE TABLE mais pas ailleurs.

Dans votre cas, il faut créer la séquence puis modifier la valeur par défaut de la colonne avec un nextval de la séquence.


Guillaume.

Hors ligne

Pied de page des forums