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 ?
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!