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
Libérer: 2025-01-22 00:22:11
original
571 Les gens l'ont consulté

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 :

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]
Copier après la connexion

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 :

SELECT  [VehicleID]
       ,[Name]
       ,(SELECT STRING_AGG([City], ', ')
         FROM [Location]
         WHERE VehicleID = V.VehicleID) AS Locations
FROM   [Vehicle] V
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal