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

#1 PSQL » modifier le visuel d'un champ : problème avec cast » 13/06/2016 18:07:32

trauqnej
Réponses : 2

Bonjour,
je cherche comment transformer une champ texte
contenant : 0654321098
devenant  : 06 5432 1098

j'ai essayé :
select to_char(tel, '99G9999G9999') from table;   
--- mais une erreur:
--- No function matches the given name and argument types. You might need to add explicit type casts.

donc j'essaie :
select to_char(cast(tel as text), '99G9999G9999') from table;   
--- mais il me remet :
--- No function matches the given name and argument types. You might need to add explicit type casts.

J'en ai essayé plusieurs autre (to_number), mais toujour le meme résultat.
Je ne sais pas comment je dois mettre le cast.
Pouvez-vous m'aider

Cordialement,

#2 Re : PSQL » la colonne est de type numeric mais l'expression est de type text » 17/12/2014 18:55:26

http://docs.postgresql.fr/9.1/pg91.pdf
!! 219/1957 !!
je mets le résumé ci-dessous :

-- aplatir un tableau 2D
CREATE OR REPLACE FUNCTION unnest2(anyarray)
RETURNS SETOF anyelement AS $$
.....

Cela parle bien de fonction.

Après.... dans quel cas cela est utilisé...
Je pense qu'il y aurait peut-être moyen de faire qqChose avec
mais n'étant pas encore assez barbu-postgres.... j'imagine.

Trauq

#3 Re : PSQL » la colonne est de type numeric mais l'expression est de type text » 16/12/2014 14:46:43

Bonjour,
j'ai pris la doc 9.1 en pdf
le chapitre 9.3 parle de fonction
(et que l'on peut en créer (page219/1957))
Trauq

#4 Re : PSQL » problème daccès au serveur et aux bases crées » 16/12/2014 01:09:44

Ma technique pour debuter est de passer par le superAdmin (avec la commande su)
Puis ensuite de se logguer en tant que postgres
Je crée le role (pour simplifier : ton nom d'utilisateur linux : dudulle)
(En lui donnant le droit de créer des bases mais sans etre administrateur de bases (voir create user, je crois)
Revenir a ton prompt linux : dudulle
Faire createdb
Ensuite psql
C'est le plus simple sous linux, mais ce n'est que mon avis

Cordialement,
Trauq

#5 Re : PSQL » la colonne est de type numeric mais l'expression est de type text » 16/12/2014 00:51:15

J'ai regardé en diagonale les fonction ya peut etre moyen de faire un truc avec ;
Mais j'ai pas compris grand chose.
Vous auriez un bon tuto ditactique la-d'ssus ?

Trauq

#6 Re : PSQL » la colonne est de type numeric mais l'expression est de type text » 15/12/2014 18:57:45

Je Me réponds :
une des solution est de faire une condition :
insert into public.tableB2(champBB22,champBB33) select champAA11='O' ,
case when c33='' then NULL ELSE cast(c33 as numeric) end      --- permet de prendre la valeur du champ ou de mettre NULL
from public. tableA1;

la question est :
Existe-t-il plus simple ?

Cordialement,
Trauq

#7 PSQL » la colonne est de type numeric mais l'expression est de type text » 15/12/2014 18:50:21

trauqnej
Réponses : 9

faisant suite à mes recherche : voir ( http://forums.postgresql.fr/viewtopic.php?id=3400)
je voudrais, maintenant mettre dans un champ "numeric" une donnée-numérique venant d'un champ texte.

j'ai essayé un joli :
insert into public.tableB2(champBB22,champBB33) select champAA11='O' , cast(CC33 as numeric) from public. tableA1;
cela fonctionne s'il y a des données (de type numérique, bien entendu) dans le champ CC33
malheureusement s'il n'y a pas de données ==> contenu du champ = NULL
alors j'ai une erreur :
    syntaxe en entrée invalide pour le type numeric : «  »

Trauq

#8 Re : PSQL » la colonne est de type boolean mais l'expression est de type text » 15/12/2014 16:53:12

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.

#9 PSQL » la colonne est de type boolean mais l'expression est de type text » 12/12/2014 18:34:55

trauqnej
Réponses : 2

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

#10 Re : PHP » débutant connexion php en pdo sur postgresql » 28/11/2014 15:40:14

rebonjour,
ce que je veux dire par : "cela ne fonctionne pas" :
Dans le premier cas, j'ai connexion ok qui s'affiche dans la page web généré.
dans le second cas, page blanche.. ce qui indique qu'il y a un problème au niveau du code qui suit.

d'ailleurs lorsque je met le code en commenté (je mets des # dièses au début de chaque ligne) puis enregistre le fichier
j'ai de nouveau connexion ok qui apparaît.

en Attendant, merci pour le lien.

Cordialement,

#11 PHP » débutant connexion php en pdo sur postgresql » 28/11/2014 13:43:56

trauqnej
Réponses : 5

Bonjour,
j'ai tester cette requête qui fonctionne :

<?php
$db = new PDO("pgsql:host=localhost;dbname=maBase", "utilisateur", "monMotDePasse");
echo "Connexion OK<br/>";
$qry = $db->prepare("SELECT * FROM jeux_video;");
$qry->execute();
$noms = $qry->fetch();
print_r($noms);
?>

par contre, en testant celle ci-dessous, cela ne fonctionne pas :
<?php
## code venant du site openclassrooms ##
$db = new PDO('pgsql:host=localhost;dbname=nomBase', 'utilisateur', 'motDePasse');
echo "Connexion OK<br/>";
$reponse = $bdd->query('select * from jeux_video;');
while ($donnees = $reponse->fetch())
{
    echo '<p>' . $donnees['nom'] .'</p>' ;
    echo '<p>' . $donnees[0] .'</p>' ;
?>

pouvez-vous m'indiquer mon erreur? existe-t-il un "vocabulaire" spécial php-postgresql, et ou le trouver ?

cordialement,
Frédéric

Pied de page des forums

Propulsé par FluxBB