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

Développement SQL Server Discussion :

Concaténation de texte


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Chef de projet informatique
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Par défaut Concaténation de texte
    Bonjour,

    Je me suis appuyée sur cette solution proposée pour pouvoir obtenir le même résultat à la différence près que je m’appuie sur le résultat d'une requête et non d'une table. Et malheureusement, j'ai le message d'erreur suivant :
    "Incorrect syntax near the keyword 'SELECT'."

    Pouvez-vous SVP m'indiquer où est l'erreur ?

    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    CREATE FUNCTION [dbo].[Concat] (@Code nvarchar(10))  
    RETURNS nvarchar(20) AS   
    BEGIN 
        DECLARE @TexteConcat nvarchar(20) 
        SET @TexteConcat = ''
     
        SELECT @TexteConcat = @TexteConcat + Class + ';' 
        FROM Table1
        WHERE Code=@Code 
        ORDER BY Class
     
        RETURN @TexteConcat
    END
     
     
    SELECT distinct Code, dbo.Concat(Code)
    from (
            select distinct Code, Class
            from table1 T1
                ,table2 T2
            where T1.Code=T2.Code 
            and Code in ('0200349546','0200349553','0200349561')
            and T2.GroupingCode='01'
           ) as aa
    order by Code

    en vous remerciant.

    Cordialement,
    Kriss.fr

  2. #2
    Membre expérimenté
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Billets dans le blog
    4
    Par défaut
    Un petit Edit et une balise code pour la clarté de lecture?

    Merci

    Cordialement,
    Lyche
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    bonjour,

    Lancez la requête indépendamment de la création de la création de la fonction.

    Par exemple, dans votre code, placez un GO après la création de la fonction.

    Mais... êtes vous également sous SQL Server 2000 ?

    avec une version plus récente, il y a des solutions plus élégantes...

  4. #4
    Candidat au Club
    Femme Profil pro
    Chef de projet informatique
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Par défaut
    Citation Envoyé par Lyche Voir le message
    Un petit Edit et une balise code pour la clarté de lecture?

    Merci

    Cordialement,
    Lyche
    Oups désolée, je n'ai pas l'habitude de poster des lignes de code


    Citation Envoyé par aieeeuuuuu Voir le message
    bonjour,

    Lancez la requête indépendamment de la création de la création de la fonction.

    Par exemple, dans votre code, placez un GO après la création de la fonction.

    Mais... êtes vous également sous SQL Server 2000 ?

    avec une version plus récente, il y a des solutions plus élégantes...
    Bonjour,

    Je vais essayer en mettant un GO comme vous l'indiquez.

    Je suis sous la version 2008 de SQL Server donc si vous avez quelque chose de plus élégant, je suis tout à fait preneuse.

    Cordialement,
    Kriss

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Effectivement, GO est une instruction pour l'utilitaire en lignes de commandes SQLCMD avec lequel SQL Server Management Studio interagit. Toute création de module (procédure stockée, fonction, déclencheur) doit être unique : il ne peut y avoir d'autre instruction dans le lot. On sépare les lots à l'aide de GO

    En ce qui concerne l'expression de votre requête, vous pouvez vous inspirer de ce que j'ai donné ici. Je vous déconseille l'utilisation de fonctions scalaires, car leur exécution est contre-performante par nature : de telles fonctions sont exécutées ligne de résultat par ligne de résultat. Supposons donc que votre requête retourne 1000 lignes : la fonction scalaire sera appelée 1000 fois. On peut s'en rendre compte à l'aide de SQL Profiler.

    En revanche, si vous créez une fonction de table en ligne, celle-ci est appelée une seule fois pour l'ensemble des lignes de résultat, ce qui est de la même nature que SQL : ensembliste et en conséquence performant.

    @++

  6. #6
    Candidat au Club
    Femme Profil pro
    Chef de projet informatique
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Bonjour,

    Effectivement, GO est une instruction pour l'utilitaire en lignes de commandes SQLCMD avec lequel SQL Server Management Studio interagit. Toute création de module (procédure stockée, fonction, déclencheur) doit être unique : il ne peut y avoir d'autre instruction dans le lot. On sépare les lots à l'aide de GO

    En ce qui concerne l'expression de votre requête, vous pouvez vous inspirer de ce que j'ai donné ici. Je vous déconseille l'utilisation de fonctions scalaires, car leur exécution est contre-performante par nature : de telles fonctions sont exécutées ligne de résultat par ligne de résultat. Supposons donc que votre requête retourne 1000 lignes : la fonction scalaire sera appelée 1000 fois. On peut s'en rendre compte à l'aide de SQL Profiler.

    En revanche, si vous créez une fonction de table en ligne, celle-ci est appelée une seule fois pour l'ensemble des lignes de résultat, ce qui est de la même nature que SQL : ensembliste et en conséquence performant.

    @++
    Merci pour ces infos.
    J'essaie dès que possible et vous tiens au courant.

    Cordialement,
    Kriss

Discussions similaires

  1. concaténation date + texte excel
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/11/2006, 18h04
  2. concaténation de texte dans un champ
    Par Apprenti3 dans le forum Access
    Réponses: 1
    Dernier message: 25/09/2006, 20h37
  3. [VBA-E]Concaténer fichier texte
    Par illight dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 11/05/2006, 11h16
  4. formulaire et concaténation type="text" avant soumission
    Par jakouz dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/04/2006, 11h39
  5. concaténer fichiers texte ligne par ligne
    Par tiboleo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/03/2006, 14h45

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