Maison >base de données >tutoriel mysql >Comment concaténer les résultats d'une requête SQL en une seule chaîne dans SQL Server ?

Comment concaténer les résultats d'une requête SQL en une seule chaîne dans SQL Server ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-27 22:09:10460parcourir

How to Concatenate SQL Query Results into a Single String in SQL Server?

Concaténation des résultats de requête SQL en une seule chaîne

Dans SQL Server, la tâche consistant à combiner plusieurs résultats de requête en une seule chaîne peut être réalisée en utilisant diverses techniques.

POUR XML PATH et STUFF

Pour SQL Server 2005 et versions ultérieures, la combinaison FOR XML PATH et STUFF offre une approche simple :

DECLARE @CodeNameString varchar(100)

SELECT 
   @CodeNameString = STUFF( (SELECT ',' + CodeName 
                             FROM dbo.AccountCodes 
                             ORDER BY Sort
                             FOR XML PATH('')), 
                            1, 1, '')

Cette méthode concatène les résultats de la requête en une seule chaîne XML, puis utilise STUFF pour supprimer le premier caractère "," .

Concaténation basée sur XML

Une autre option consiste à exploiter la concaténation XML fonctionnalité :

DECLARE @CodeNameString varchar(100)

SET @CodeNameString = (SELECT CodeName FROM dbo.AccountCodes FOR XML PATH(''))

Approche basée sur le curseur

Dans les cas où la concaténation XML n'est pas réalisable, une approche basée sur le curseur peut être utilisée :

DECLARE @CodeNameString varchar(100)
DECLARE @CodeName varchar(50)

DECLARE cursor CURSOR FOR
SELECT CodeName
FROM dbo.AccountCodes
ORDER BY Sort

OPEN CURSOR
FETCH NEXT FROM CURSOR INTO @CodeName
WHILE @@FETCH_STATUS = 0
BEGIN
   SET @CodeNameString = @CodeNameString + @CodeName + ','
   FETCH NEXT FROM CURSOR INTO @CodeName
END

CLOSE CURSOR
DEALLOCATE CURSOR

Cette méthode parcourt les résultats de la requête et les ajoute au @CodeNameString variable.

L'approche préférée

L'approche préférée dépend de la version de SQL Server et des caractéristiques spécifiques des données. Pour les cas où les données contiennent des caractères spéciaux tels que '<', '>' ou '&', envisagez d'utiliser la technique FOR XML PATH et STUFF, tandis que pour des ensembles de données plus volumineux ou des scénarios sensibles aux performances, l'approche basée sur le curseur peut être plus appropriée.

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