Cross apply con i campi XML

di Andrea Zani, in Memo,

Il problema che mi si è posto: tabella con un campo xml contenente dei feed. Un esempio vale più di mille parole:

SELECT [Id],[Name],[Information] FROM [Test].[dbo].[XmlTest]

1 AZ1 <root><feed>Article1</feed><feed>Article2</feed><feed>Article3</feed></root>
2 AZ2 <root><feed>Article4</feed><feed>Article5</feed></root>
3 AZ3 <root><feed>Article6</feed><feed>Article7</feed><feed>Article8</feed></root>

Problema: con un query è possibile avere la lista dei feed contemporaneamente con un'unica query senza dover utilizzare Linq, anonymous type o miciomiciobaubau?

Sì, con questa query che utilizza il cross apply:

select [Id],[Name],s.x.query( '.' )
from [Test].[dbo].[XmlTest]
cross apply [Information].nodes('/root/feed') s( x )

Che ci permette di avere:

1 AZ1  <feed>Article1</feed>
1 AZ1  <feed>Article2</feed>
1 AZ1  <feed>Article3</feed>
2 AZ2  <feed>Article4</feed>
2 AZ2  <feed>Article5</feed>
3 AZ3  <feed>Article6</feed>
3 AZ3  <feed>Article7</feed>
3 AZ3  <feed>Article8</feed>

Comodo per unire il risultato di più record dei campi xml, no? Boh!

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese