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 12/12/2014 18:34:55

trauqnej
Membre

la colonne est de type boolean mais l'expression est de type text

Bonjour,
un base postgresql est créée avec un champ text : le contenu de ce champ est O/N (Oui ou Non)
je récupère ce champ dans une autre table en mettant le type boolean

    create tableA1 (champAA11 text);
    create tableB2 (champBB22 boolean);

pour mettre les infos de champ champAA11 vers champBB22 : je fais :
    insert into public.tableB2(champBB22) (select cast(champAA11 as boolean) from public. tableA1);

le problème :
Le O de Oui n'est pas reconnu en tant que valeur boléenne.

donc :
1.  j'exporte dans un fichier txt le champ ;
2. je change le O en TRUE et sauvegarde
3.  j'importe le champ dans tableB2(champBB22)

( Certains penseront à me dire de mettre TRUE, ou 'y' ou autre chose dans le champ  tableA1 (champAA11 text).
mais malheureusement je n'ai pas ce pouvoir-la.)

Questions:
A. Y a-t-il plus simple que faire les point 1,2,3 ?
B. Peut-on changer dans la requête le contenu du champ (O ==> TRUE) ?

Merci pour votre lumière.
Trauq

Dernière modification par trauqnej (15/12/2014 00:49:58)

Hors ligne

#2 12/12/2014 19:02:52

gleu
Administrateur

Re : la colonne est de type boolean mais l'expression est de type text

Il suffit de tester si le champ vaut 'O' :

insert into public.tableB2(champBB22) select champAA11='O' from public. tableA1;

(pseudo SQL vu que je ne sais pas comment vous faites la jointure entre les deux tables)

Hors ligne

#3 15/12/2014 16:53:12

trauqnej
Membre

Re : la colonne est de type boolean mais l'expression est de type text

merci , cela fonctionne. C'est vraiment génial postgresql.(faut juste savoir comment faire).
En fait, je refais une copie de table avec des champs correctement nommé et type de colonnes corrects.


donc, maintenant je vais m'atteler au champ text devant être des nombres.
j'ai commencé un "insert into public.tableB2(champBB22,champBB33) select champAA11='O' , cast(CC33 as integer) from public. tableA1;
lorsqu'il y a des chiffre, c'est bon.
Si le champs est vide : message :
    syntaxe en entrée invalide pour le type numeric : «  »
après recherche, je vais ouvrir un nouveau ticket.

Encore merci pour votre aide.

Dernière modification par trauqnej (15/12/2014 18:03:20)

Hors ligne

Pied de page des forums