Vous n'êtes pas identifié(e).
Pages : 1
C'était....
En faite le problème c'est que j'essayé de exécuter le code suivant :
vTable varchar(30);
vCount int;
"select count * from vTable into vCount"
Or aprés quelques recherches, Le variable "vTable" étant une table ce type de syntax doit être execute en mode dynamique
Bonjour a tous,
J'ai cette function
--- Function
CREATE OR REPLACE FUNCTION f_count_rec (vTableName text)
RETURNS int4
LANGUAGE plpgsql
AS $$
declare
vCount int4;
stmt text;
begin
stmt := 'select count (*) from '||vTableName;
execute stmt into vCount;
return vCount;
end;
$$
Marche correctement
--- Table pour test
create table testr (testr int)
insert into testr values (10);
insert into testr values (20);
insert into testr values (30);
--- Count
select count(*)
from
testr
-- Execution de la funtion
select f_count_rec('testr');
Ca marche,
Merci
Bonjour à tous.
Pendant de l’exécution d'une procédure J'ai besoin de afficher (insérer dans une table de log) le'heure de début et puis à la fin, l'heure laquelle s'est terminé.
J'ai utilisé "select now() into var" au début de la proc
et puis "select now() into var2" à la fin
Cependant, le résultat est toujours le même !!! L'heure début = l'heure de fin ?!?
Avez vous une idée
Merci d'avance
Cdt
Oui, dans certains cas, oui.
Donc, l'idée est de convertir en INT les valeurs en chiffres
Bonjour
Mais il y pas de carcter en chiffre,, justement
SUBSTR(col1,4,3) ramene uniquement les chiffres
Voici un testcase "propre"
create table test2 (text text);
--
insert into test2 values ('000 ');
insert into test2 values ('050001 ');
insert into test2 values ('022000 A');
--
select text from test2
--
Objectif:
A partir d'ici j'essaye de convertir le subchaîne de caractéres --> substr(text,4,3) en integer sans sucées.
J'au aussi essayé avec nullif, ::integer, tout ce qu'il y a dans le marché à l'heure actuel,
En résumé, j'ai aussi les suggestion du lien
https://stackoverflow.com/questions/105 … r-postgres
--
Test effectués:
L'idée de utiliser case c'étais plutôt avec cet objectif
case
when (substring(text,4,3)) = ' ' then null
else cast(substring(text,4,3)) as integer
end as case1
--
Mais postgress ne veut pas "caster" tout simplement ....
Vous trouverez ci-dessous aussi la requete avec plusieurs functions utilisées
--
select
cast(replace(substr(text,4,3),'',null) as integer) colA,
replace(trim(substr(text,4,3)),'',null) colB,
coalesce(substr(text,4,3),'0'),
--cast(nullif(substring(text,4,3),'')as integer) NULLIFF,
case
when (substring(text,4,3)) = null then null
else (substring(text,4,3))
end as case1
from test2
--
Si vous avez des idées, merci d'avance
Salut Julien
Je suis d'accord avec toi, au sujet de l'inversion de substr() avec le CAST. Mais c'étais la syntaxe que j'ai trouvé dans le web pour la plupart de examples.
J'ai essayé ton code et ça marche bien, pour cet exampleµ.
Cependant, j'ai une ligne vide, example, si on insert un nouveau registre
insert into test values (' ')
La ca ne marche plus.
Une idée c'est la bienvenue.
J'ai aussi essayé avec case
CASE
WHEN substr(text,2,3) is null the null
ELSE cast( substr(text,2,3) as integer)
END as COL2
Ce qui me semble trés logique, parce que si j'enleve le CAST dérriere le substr ça marche trés bien.
J'ai aussi essayé avec replace et trim, genre
replace(substr(tex,2,3),'',null) ... comble de l'ironie ... remplace toutes les valeurs du champs par null
avec trim
trim(substr(tex,2,3),'',null') ... même résultat .... remplace toutes les valeurs par nulll
Je suis à court d'idées ....
Cdt
Rien y fait.
Bonjour a tous,
J'ai un "petit" gros probleme de conversion avec pgSQL
J'ai une table test:
create table test(texto text)
On insérer 3 lignes
insert into test values ('123')
insert into test values (' 565') (ici 4 espaces en blanc suivi de 565)
insert into test values ('456')
Et voici un example du conten de ma table
J'ai besoin de soustraire 2 charactéres dans une chaîne text et convertir en int à partir de la 2éme position
J'ai essayé
select substr(CAST(texto AS INTEGER),2,2) from test >> et j'ai toujours un message :"ERROR 42883: function integer,integer,integer doesn't exist"
J'ai essayé une autre approche en utilisant
select nullif(substr(texto,2,3),'')::integer from test >> et je reçois le message ERROR 22P02 invalid synatx near ""
En faite c'est la ligne avec les espaces en blanc que générè ce comportement, parce que ma chaine de conversion commence à 2 avec 2 de longeur, or dasn cette intervale on retrouve une valeur nul
Pouvez vous m'aider ?
Merci d'avance
Pages : 1