Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/07/2005, 11h35   #1
Invité de passage
 
Inscription : juin 2005
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 3
Points : 1
Points : 1
Par défaut Problème de concaténation

Salut,
J'ai un problème avec une requête qui doit me concatener deux chaines dont une qui peut etre NULL. J'ai tenté plusieurs choses mais je n'arrive pas a trouver de solution. V'là ma requête originale:

Code :
SELECT iddossier, (diametre1 || '/' || diametre2) AS diametre FROM t_tabbran WHERE iddossier = 2492;
et quoiqu'il arrive, diametre me renvoie NULL (pas une chaine vide, ou un espace mais bien NULL). avec un COALESC idem:

Code :
SELECT (diametre1 || '/' || COALESCE(diametre2)) AS diametre FROM t_tabbran WHERE iddossier = 2492;
J'ai tenté de tester si diametre2 est NULL et de le remplacer par ' ' dans une proc stock, même résultat:
requete:
Code :
SELECT (f_concat(to_char(diametre1,'9999'),to_char(diametre2,'9999'))) AS diametre FROM t_tabbran WHERE iddossier = 2492;
fonction:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE OR REPLACE FUNCTION drab.f_concat(varchar, varchar)
  RETURNS varchar AS
'DECLARE
 
	v_chaine varchar;
BEGIN
 
	--Concaténation des deux chaines
	IF ($2 IS NOT NULL) THEN
	v_chaine := $1 || \'/\' || $2;
	ELSE
	v_chaine := $1;
	END IF;
	return v_chaine;
END
'
  LANGUAGE 'plpgsql' IMMUTABLE STRICT;
j'ai surement du merder quelque part sinon ca marcherait mais la je vois plus rien j'ai envie de tout casser . toute aide est la bienvenue.
Proktor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2005, 15h00   #2
Invité de passage
 
Inscription : juin 2005
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 3
Points : 1
Points : 1
Voilà, j'ai trouvé la solution comme un grand garçon (bon on m'a un peu aidé :p)

Code :
SELECT (COALESCE(to_char(diametre1,'9999'),'') || '/' || COALESCE(to_char(diametre2,'9999'),'')) AS diametre FROM t_tabbran WHERE iddossier = 2492;
Vive moi ^^
Proktor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h45.


 
 
 
 
Partenaires

Hébergement Web