Combinaison de données texte de plusieurs lignes SQL Server : un guide complet
De nombreux utilisateurs de SQL Server doivent combiner des données texte sur plusieurs lignes en une seule chaîne. Ceci est inestimable pour la génération de rapports, la fusion de données et les calculs basés sur des chaînes.
Imaginez un tableau avec une liste de noms :
<code>Peter Paul Mary</code>
Le but est de créer une chaîne séparée par des virgules : Peter, Paul, Mary
Méthode 1 : pour SQL Server 2017 et versions ultérieures (STRING_AGG)
SQL Server 2017 et Azure SQL Database offrent la STRING_AGG
fonction efficace :
<code class="language-sql">SELECT STRING_AGG(Name, ', ') AS ConcatenatedNames FROM TableName;</code>
Méthode 2 : analyse XML (pour les anciennes versions de SQL Server)
Pour les versions antérieures de SQL Server, l'analyse XML fournit une solution :
<code class="language-sql">SELECT LEFT( ( SELECT Name + ',' AS [text()] FROM TableName ORDER BY Name FOR XML PATH('') ).value('.', 'nvarchar(max)'), LEN(( SELECT Name + ',' AS [text()] FROM TableName ORDER BY Name FOR XML PATH('') ).value('.', 'nvarchar(max)')) - 1 ) AS ConcatenatedNames FROM TableName;</code>
Méthode 3 : Utilisation de la fonction STUFF
La fonction STUFF
propose une autre approche :
<code class="language-sql">SELECT STUFF( ( SELECT ',' + Name FROM TableName ORDER BY Name FOR XML PATH('') ).value('.', 'nvarchar(max)'), 1, 1, '' ) AS ConcatenatedNames FROM TableName;</code>
Ces méthodes concatènent efficacement les données texte de plusieurs lignes dans SQL Server, simplifiant ainsi la manipulation et l'agrégation des données. Choisissez la méthode appropriée à votre version de SQL Server.
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!