select concaténation

select concaténation - SQL/NoSQL - Programmation

Marsh Posté le 17-02-2010 à 10:50:41    

Bonjour
 
Je veux faire un select, et afficher en concaténant(||) les 3 valeurs si elles ne sont pas vides mais si elles le sont je ne voudrais pas afficher les tiret('-') qui les séparent

Citation :


select    
    T2.CD_PAYS || '-' || T2.CD__AN || '-' ||T2.CD__ID  
from ...


 
Comment faire??
 
Merci

Reply

Marsh Posté le 17-02-2010 à 10:50:41   

Reply

Marsh Posté le 17-02-2010 à 10:53:14    

c'est pas au SGBD de s'occuper de ça... le SGBD te renvoie les données brutes, après c'est au code métier de s'occuper de la mise en forme.
un SGBD n'est pas un tableur


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-02-2010 à 11:07:04    

Oui c'est plus logique
 
Mo code metier
<target name="build_mess_body">
                <replaceregexp file="${temp}/${fout}_${dest_id}"
                         match="^(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),.+$"
                         replace="|{|[ \1 |]|[ \2 |]|[\6 \5|]|[ \8 \9 \10|]|[ \13 (\14)|]|}"
                         byline="true"
                         encoding="UTF-8"
      />
 
Comment faire??

Reply

Marsh Posté le 17-02-2010 à 11:07:48    

Si t'es sous MySQL, tu peux regarder du côté de concat_ws() mais je suis plutôt d'accord avec Harko. J'y vois quand même une exception : quand t'es dans une appli scriptée (genre en php), certains traitements peuvent être faits plus rapidement par le SGBD (car écrit bien souvent en C) que par le langage scripté. donc, pour des questions de perfs, ça peut avoir du sens de faire plus bosser le SGBD.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 17-02-2010 à 11:11:53    

La double barre verticale marche avec Oracle, mais il faut utiliser autre chose avec d'autres bases de données.
Donc, supposons que ce soit de l'Oracle. Alors la solution est d'utiliser DECODE. Essayer :

select      
   DECODE(T2.CD_PAYS, null, T2.CD_PAYS, T2.CD_PAYS || '-')
   || DECODE(T2.CD__AN, null, T2.CD__AN, T2.CD__AN || '-')
   || T2.CD__ID
from ...  


Message édité par olivthill le 17-02-2010 à 11:12:36
Reply

Marsh Posté le 17-02-2010 à 15:32:56    

Merci ça marche les plusieurs decode

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed