Comment faire pour convertir un jeu d'enregistrements à une chaîne délimitée dans SQL Server
Est-il un moyen de convertir une seule colonne record établi comme
1
2
3
en "1,2,3" chaîne dans SQL Server?
Je sais que je peux utiliser un curseur pour le faire, mais je veux savoir si il y a une manière différente.
Est-ce que avez à faire au niveau sql, ou vous pouvez simplement prendre soin de cette situation sur la consommation fin par programmation?
Utilisation
double possible de SQL Server: puis-je séparés par des Virgules Plusieurs Lignes Dans Une Colonne?
Est-ce que avez à faire au niveau sql, ou vous pouvez simplement prendre soin de cette situation sur la consommation fin par programmation?
Utilisation
FOR XML PATH
ou l'affecter à une variable dans un SELECT
: double possible de Comment puis-je combiner plusieurs lignes dans une liste délimitée par des virgules dans SQL Server 2005?double possible de SQL Server: puis-je séparés par des Virgules Plusieurs Lignes Dans Une Colonne?
OriginalL'auteur Matthew Rygiel | 2011-01-12
Vous devez vous connecter pour publier un commentaire.
J'ai eu du succès de la création d'une fonction à l'aide de Fusionner comme ci-dessous pour ce faire. Vous pouvez ensuite utiliser la fonction select pour obtenir la chaîne délimitée. (Vous pouvez ajouter des paramètres à votre fonction et à les utiliser dans les fusionner instruction select.)
Attendez donc que si je voulais fusionner sur une autre table que myTable? Allez-vous créer une fonction par table pour enregistrer de ne pas avoir à se souvenir de fusionner ou xml path? (Je préfère fusionner moi-même, mais c'est parce que je viens de l'utiliser beaucoup, le chemin d'accès xml méthode est parfaitement raisonnable de le faire.) Il est possible de créer un SP ne le faire (multi table / colonne multi concaténation), mais même alors, à mon avis, il semble juste comme essayer de cacher ce qui se passe réellement)
(faute de frappe, avait xmp sur le cerveau aujourd'hui donc, tout était xmp_path ce et xmp_path que, corrigée)
Xml path fonctionne, mais convertit automatiquement n'importe quel caractère spécial de son entité de référence (par exemple, & devient &), qui peut ne pas être souhaitable. De Plus, vous pouvez avoir une assez compliqué instruction select dans votre fonction en cas de besoin. Et oui, vous devez créer une nouvelle fonction pour les autres tables si cela peut ne pas être la solution optimale dans tous les cas.
Aussi, la fonction de la solution qui fonctionne le mieux si vous voulez la chaîne délimitée à l'un de plusieurs colonnes dans votre sortie.
OriginalL'auteur TKTS
Se rejoignent manière décente pour ce faire
http://msdn.microsoft.com/en-us/library/ms190349.aspx
OriginalL'auteur Jason Benson
Remarque: Les trucs fonction supprime juste la première virgule de la chaîne de résultat.
OriginalL'auteur Joe Stefanelli