Maison >base de données >tutoriel mysql >Comment puis-je concaténer plusieurs lignes de sous-requête en un seul champ délimité dans SQL Server ?

Comment puis-je concaténer plusieurs lignes de sous-requête en un seul champ délimité dans SQL Server ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-22 00:22:11509parcourir

How Can I Concatenate Multiple Subquery Rows into a Single Delimited Field in SQL Server?

Combiner efficacement les résultats de sous-requêtes dans un seul champ délimité dans SQL Server

SQL Server propose plusieurs méthodes pour concaténer plusieurs lignes d'une sous-requête en un seul champ avec un délimiteur. Bien que les curseurs côté serveur soient une option, ils sont souvent moins efficaces. Cet article explore des techniques plus efficaces.

POUR XML PATH : une solution pour les anciennes versions de SQL Server (2005 et inférieures)

Pour SQL Server 2005 et les versions antérieures, la commande FOR XML PATH fournit une solution concise :

<code class="language-sql">SELECT [VehicleID]
     , [Name]
     , (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) 
         FROM [Location] 
         WHERE (VehicleID = Vehicle.VehicleID) 
         FOR XML PATH ('')), 1, 2, '')) AS Locations
FROM [Vehicle]</code>

Ceci utilise intelligemment la génération de chemin XML pour concaténer City valeurs, puis STUFF supprime la virgule initiale.

STRING_AGG : la méthode préférée pour SQL Server 2017 et versions ultérieures

SQL Server 2017 et versions ultérieures introduisent STRING_AGG, une fonction considérablement améliorée :

<code class="language-sql">SELECT  [VehicleID]
       ,[Name]
       ,(SELECT STRING_AGG([City], ', ')
         FROM [Location]
         WHERE VehicleID = V.VehicleID) AS Locations
FROM   [Vehicle] V</code>

STRING_AGG offre de meilleures performances et permet des délimiteurs personnalisés, ce qui en fait l'approche recommandée pour les déploiements SQL Server modernes.

Résumé

Ces méthodes fournissent des moyens efficaces de consolider plusieurs lignes de sous-requête en une seule chaîne délimitée au sein de SQL Server, rationalisant ainsi les tâches de manipulation de données. Le choix de la méthode appropriée dépend de votre version de SQL Server ; STRING_AGG est le choix préféré pour les versions plus récentes en raison de ses performances et de sa flexibilité améliorées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn