jeudi 8 juillet 2010

Astuce pour afficher les résultats de requête sur une seule ligne/sous forme d’une chaine de caractères

Une fois je voulais récupérer les données d’une table de la base de données SQL Server 2008 sous forme d’une chaîne de caractères. Je pensais faire une fonction avec un curseur et concatène des données de chaque ligne pour former une chaîne de caractères.

Supposons, il y a une table suivante dans une base de données :
Table dbo.PAYS
ID LIBELLE
1 France
2 Allemagne
3 Belgique
4 Espagne

Lorsque l’on fait la requête: SELECT LIBELLE FROM dbo.PAYS, le résultat affiché:
LIBELLE
France
Allemagne
Belgique
Espagne

Une astuce facile pour former une chaîne de caractère à partir de ce résultat est d’utiliser le mot clé : FOR XML PATH

Le mode FOR XML PATH est utilisé pour construire un XML à partir de résultats de requête.

Examples:
Requête
SELECT dbo.PAYS.LIBELLE
FROM dbo.PAYS
ORDER BY dbo.PAYS.ID
For XML PATH
Résultat
<row>
<LIBELLE>France</LIBELLE>
</row>
<row>
<LIBELLE>Allemagne</LIBELLE>
</row>
<row>
<LIBELLE>Belgique</LIBELLE>
<row>
<row>
<LIBELLE>Espagne</LIBELLE>
</row>

Requête:
SELECT dbo.PAYS.LIBELLE + ''
FROM dbo.PAYS
ORDER BY dbo.PAYS.ID
For XML PATH ('Pays')
Résultat :
<Pays>France</Pays>
<Pays>Allemagne</Pays>
<Pays>Belgique</Pays>
<Pays>Espagne</Pays>

Et, la requête suivante:
SELECT dbo.PAYS.LIBELLE + ','
FROM dbo.PAYS
ORDER BY dbo.PAYS.ID
For XML PATH ('')
Et voila le résultat:
France,Allemagne,Belgique,Espagne

Voir plus loin sur FOR XML PATH :
http://technet.microsoft.com/fr-fr/library/ms189885(SQL.90).aspx

Aucun commentaire:

Enregistrer un commentaire