Click here to monitor SSC
SQLServerCentral is supported by Red Gate Software Ltd.
 
Log in  ::  Register  ::  Not logged in
 
 
 
        
Home       Members    Calendar    Who's On


Add to briefcase ««12

Looping through a data set and combining values Expand / Collapse
Author
Message
Posted Friday, October 05, 2012 2:46 PM
Grasshopper

GrasshopperGrasshopperGrasshopperGrasshopperGrasshopperGrasshopperGrasshopperGrasshopper

Group: General Forum Members
Last Login: Monday, May 13, 2013 5:47 AM
Points: 24, Visits: 122
Just discovered a new problem, and I cant get round it. The data is now getting XML encoded < to < and > to > etc

Any ideas?
Post #1369315
Posted Friday, October 05, 2012 3:12 PM
Right there with Babe

Right there with BabeRight there with BabeRight there with BabeRight there with BabeRight there with BabeRight there with BabeRight there with BabeRight there with Babe

Group: General Forum Members
Last Login: Yesterday @ 5:56 AM
Points: 719, Visits: 1,196
do a replace around it. Each character will be XML encoded and you can simply replace it back.
Post #1369324
Posted Friday, October 05, 2012 4:44 PM


Ten Centuries

Ten CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen Centuries

Group: General Forum Members
Last Login: Yesterday @ 4:46 PM
Points: 1,287, Visits: 3,850
oscarooko (10/5/2012)
Just discovered a new problem, and I cant get round it. The data is now getting XML encoded < to < and > to > etc

Any ideas?


You need to apply a root node to the XML, force it into XML datatype and then select out the text from the root node....like this:


declare @Table1 table (EmailAddress varchar(20), Msg varchar(20))
insert @Table1
select 'email1','blue'
union select 'email2','black'
union select 'email1','&white'
union select 'email1','<orange'
union select 'email4','red'

select e.EmailAddress as Email
,stuff((select ',' + t.Msg
from @Table1 t where t.EmailAddress = e.EmailAddress
for xml path(''),root('a'),type).value('(a/text())[1]','varchar(4000)'),1,1,'') as MessageBody
from @Table1 e
group by e.EmailAddress


The change is this line:

for xml path(''),root('a'),type).value('(a/text())[1]','varchar(4000)'),1,1,'')   as MessageBody

Where I added

,root('a'),type

to the FOR XML PATH('')

and

.value('(a/text())[1]','varchar(4000)')

to pull the text out again...


MM




Post #1369344
« Prev Topic | Next Topic »

Add to briefcase ««12

Permissions Expand / Collapse