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

MS SQL Server Discussion :

[SQL2005] Concatenation avec condition


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Par défaut [SQL2005] Concatenation avec condition
    Bonjour,


    J'ai un requette dans une Storde Procedure qui fonctionne bien mais que j'aimerais améliorer.

    Voici déjà la requette:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select RTRIM(NomFR) + '/' + ISNULL(RTRIM(NomNL),'') AS Nom FROM TypeHoraire
    Le but est de retourner la liste des noms (francais et néérlandais) séparé par '/'.

    S'il n'y a pas de valeur pour le nom néérlandais, alors il ne faudrait afficher que le francais.

    Pour l'instant j'ai bien uniquement le champ francais mais je n'arrive pas à retirer '/'.


    Quelqu'un a-t'il une idée?
    Il faudrait surement utiliser une condition, mais à l'intérieur d'un select ca foncionne pas des masses.

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 114
    Par défaut
    Si c'est dans une procédure stockée, tu dois bien pouvoir utiliser un if non ?

    je ne connais pas bien le système de proc stock de SQL Server mais un truc du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if( RTRIM(NomNL) == '' )
    SELECT RTRIM(NomFR) AS Nom FROM TypeHoraire
    else
    SELECT RTRIM(NomFR) + '/' + ISNULL(RTRIM(NomNL),'') AS Nom FROM TypeHoraire

  3. #3
    Membre éclairé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Par défaut
    C'est plus omplexe que celà malheureusement.

    Si je fais ceci;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IF( (SELECT NomNL FROM TypeHoraire) = NULL )
    SELECT RTRIM(NomFR) AS Nom FROM TypeHoraire
    else
    SELECT RTRIM(NomFR) + '/' + ISNULL(RTRIM(NomNL),'') AS Nom FROM TypeHoraire
    Il me renvoit cette erreur

    Msg 512, Level 16, State 1, Line 1
    Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
    Certaines lignes sont à NULL pour NomNL...D'autres non.

    Il faudrait surement passer par un UNION mais pour le placer dans le IF


    C'est pour celà que j'essaye de mettre la condition dans ma requette, mais à part la fonction ISNULL...

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT COALESCE(RTRIM(NomFR) + '/' + RTRIM(NomNL), RTRIM(NomFR), RTRIM(NomNL)) AS Nom 
    FROM   TypeHoraire
    Tout simplement.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre éclairé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Par défaut
    J'adore le "Tout simplement."


    Grand merci en tout cas, exactement ce qu'il me fallait

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

Discussions similaires

  1. Concatener 2 champs avec condition
    Par souketou dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 21/04/2009, 18h53
  2. Sélection multi table avec condition
    Par iuz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/05/2004, 15h04
  3. ALTER VIEW avec condition
    Par yan77 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/04/2004, 17h22
  4. Index avec conditions
    Par marhnix dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/03/2004, 10h48
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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