IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Probleme de concatenation


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Probleme de concatenation
    Bonjour,

    Je suis sous PostgreSQL 8.2.
    Je veux effectuer une concaténation à partir de 4 champs d'une même table.

    Table : obs1to4

    idobservation double precision
    obs_1 varchar (25)
    obs_2 varchar (25)
    obs_3 varchar (25)
    obs_4 varchar (25)

    Ma requête SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT o4.idobservation, o4.obs_1 || ', ' || o4.obs_2 || ', ' 
    || o4.obs_3 || ', ' || o4.obs_4 AS observateurs
    FROM obs1to4 As o4
    La concaténation fonctionne uniquement si l'ensemble des 4 champs contient une valeur non nulle. Si un des champ contient une valeur Null, le résultat de la concaténation est Null. A noter que Le champ obs_1 contient toujours une valeur.
    Comment remédier à ce problème ?

    Merci d'avance.

    Dombeya

  2. #2
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    tu devrais mettre un COALESCE(lacolonne,' ') pour chaque élément, si il est nul tu concaténeras un espace.

    Mais après ça va être moche avec les virgules en trop => cosmétique => SQL n'est pas fait pour ça, plutôt à faire dans un langage de prog.

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 392
    Points
    28 392
    Par défaut
    Si obs1 est toujours renseigné, tu peux faire comme ça...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  o4.idobservation
        ,   o4.obs_1 
            || COALESCE(', ' || o4.obs_2, '') 
            || COALESCE(', ' || o4.obs_3, '') 
            || COALESCE(', ' || o4.obs_4, '') AS observateurs
    FROM    obs1to4 AS o4
    Mais ça reste de la cosmétique !!!!

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup de vos réponses !
    Débutant en SQL, je ne connaissais pas COALESCE.
    Au niveau cosmétique, ça passe très bien, je n'ai aucune virgule qui traîne. En effet, comme il ne peut y avoir d'observateur n sans que les observateurs n-1 soient renseignés, je n'ai pas de déchet avec mes virgules.

    C'est quand même bizarre que pour mon code initial, le résultat de la concaténation renvoie une valeur NULL si l'un des champs est NULL.
    C'est interne aux spécifications du SQL ?

    En tout cas mon problème est résolu, merci encore.

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 392
    Points
    28 392
    Par défaut
    Citation Envoyé par dombeya Voir le message
    C'est quand même bizarre que pour mon code initial, le résultat de la concaténation renvoie une valeur NULL si l'un des champs est NULL.
    C'est interne aux spécifications du SQL ?
    Tout à fait !
    Toute expression contenant NULL sera évaluée à NULL

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme pour concatener 2 objets Set
    Par PORTES dans le forum C++
    Réponses: 13
    Dernier message: 16/04/2007, 15h02
  2. Probleme de concatenation dans une requete
    Par toddy_101 dans le forum Requêtes
    Réponses: 4
    Dernier message: 12/01/2007, 14h43
  3. Réponses: 4
    Dernier message: 03/11/2006, 17h11
  4. [FLASH 8] Probleme de concatenation
    Par kubito dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 14/04/2006, 14h31
  5. probleme de concatenation
    Par cyna dans le forum C
    Réponses: 2
    Dernier message: 23/08/2002, 10h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo