Vous n'êtes pas identifié(e).
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
Hors ligne
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
Hors ligne
Non, il n'existe pas plus simple. Il faut bien lui dire comment convertir une chaîne vide.
Guillaume.
Hors ligne
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
Hors ligne
Il y a du y avoir un problème avec votre message De quelle fonction parlez-vous ?
Julien.
https://rjuju.github.io/
Hors ligne
Vous parlez des fonctions du catalogue postgres ? (pg_catalog)
Cordialement,
Sébastien.
Hors ligne
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
Hors ligne
Merci de pointer un lien vers la version en ligne. J'ai regardé le fichier pdf de la doc 9.1 (je suppose en français) et la page 219 ne mentionne pas de création de fonction.
Julien.
https://rjuju.github.io/
Hors ligne
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
Hors ligne
Sincèrement, je ne vois pas en quoi "créer la fonction, exécuter la requête avec fonction, supprimer la fonction" serait plus simple que "exécuter la requête sans fonction". Mais bon, si ça vous amuse :
CREATE FUNCTION tropfacile(text) RETURNS numeric LANGUAGE sql AS $$SELECT CASE WHEN $1='' THEN NULL ELSE CAST($1 AS numeric) END;$$;
INSERT INTO public.tableB2(champBB22,champBB33)
SELECT champAA11='O', tropfacile(c33) FROM public. tableA1;
Guillaume.
Hors ligne