Cross apply con i campi XML
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!











