I have a table with an XML column. I need to insert various nodes and then set those nodes using values from a sub-query.
Setup:
use tempdb
CREATE TABLE [dbo].[Sites](
[SiteID] [int] IDENTITY(1,1) NOT NULL,
[SiteInfo] [xml] NULL,
[InVal] Varchar(50) NULL)
insert into [dbo].[Sites] ([InVal]) select 'ABC' union select 'DEF' union select 'GHI'
update [dbo].[Sites] SET [SiteInfo] = '<SiteInfo />'
update [dbo].[Sites] SET [SiteInfo].modify('insert <SiteID/> into (/SiteInfo[1])')
Here is my update in it's most simple form.
update Sites SET [SiteInfo].modify('replace value of (/SiteInfo/@SiteID)[1] with sql:column("InVal")')
I have tried with both singleton and non singleton nodes
The end result should preferably not be a singleton. i.e something like:
<SiteInfo>
<SiteID>ABC</SiteID>
</SiteInfo>