tsql: convertir des colonnes dans une colonne xml, xml par ligne
Exemple de ce que j'ai:
table: (col1 int, col2 int)
les données de l'échantillon (les données réelles ne seront pas connus au moment de l'exécution):
1,1
2,2
3,3
4,4
Résultat attendu: une seule colonne (xml)
et 4 lignes
row1: <cols><col1>1</col1><col2>1</col2></cols>
row2: <cols><col1>2</col1><col2>2</col2></cols>
row3: <cols><col1>3</col1><col2>3</col2></cols>
row4: <cols><col1>4</col1><col2>4</col2></cols>
Désolé les gars le modérateur ne voulez pas que le "bruit de réponses" à être supprimé. J'espère qu'il pourra comprendre, je suis d'aider ces pauvres gars si personne ne peut les voir ils ont complètement manqué le point. J'ai été la protection de leur réputation ...
Ici est une façon de réaliser ce que je veux. Mais ce n'est pas une bonne façon parce que le xml est construit à la main et n'est pas correctement encodés.
declare @colsList nvarchar(max)
set @colsList = ''
select @colsList = @colsList + '+ ''<' + COLUMN_NAME + '>'' + Isnull(cast( [' + COLUMN_NAME + '] as nvarchar(max)),'''') + ''</' + COLUMN_NAME + '>'' '
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'SampleTable';
select @colsList = stuff(@colsList,1,1,'');
exec('select colsValues=cast(' + @colsList + ' as xml) from SampleTable');
- Softion, veuillez arrêter d'essayer de supprimer les réponses, parce qu'ils "totalement à côté de la question". Au lieu de cela, de clarifier ce que vous êtes en train de demander, soit dans votre question ou un commentaire à leur réponse.
- J'ai clarifié la question avant de le supprimer. Je supprime donc aucun autre utilisateur ne pourrait être perturbé par des réponses qui ne sont pas pour cette question particulière.
- -1 pour mettre -1 pour une mauvaise raison. Où pensez-vous que vous êtes. À l'école ? C'est ma question et je le gère comme je veux.
Vous devez vous connecter pour publier un commentaire.
Bien simple, mieux c'est le plus rapide.
La façon la plus simple est d'utiliser cette:
Ou si vous voulez plus de contrôle sur la structure XML à utiliser:
MODIFIER
Pour produire une colonne XML pour chaque ligne, vous pouvez utiliser la sous
Comme un seul document XML pour l'ensemble de la table
Simplement utiliser POUR XML, et de spécifier un chemin d'accès de "cols"
Sortie
Noter que pour XML, mise en forme et espace ont sans signification inhérente. Donc, soit vous voulez un VARCHAR résultat avec plusieurs lignes (ressemblant à du XML), ou si vous voulez XML - choisir un.