Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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)
Guillaume.
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