How to remove column name when selecting from XMLTYPE column using FOR XML PATH

I have a table with an XMLTYPE column named "InvoiceXML".

The data in this column is XML in the form:

<Invoice CustomerNum="1234" >
<CustomDeliveryDetails />
</Invoice>

When i do

SELECT ... FOR XML PATH(''), ROOT('Invoices') 

In the end, I:

<Invoices>
 <InvoiceXML>
  <Invoice CustomerNum="1234" >
  <CustomDeliveryDetails />
  </Invoice>
 </InvoiceXML>
</Invoices>

How to stop InvoiceXML column name appearing on output?

+5
source share
3 answers
declare @T table (invoiceXML xml)

insert into @T values (
  '<Invoice CustomerNum="1234" >
     <CustomDeliveryDetails />
   </Invoice>
  ')

insert into @T values (
  '<Invoice CustomerNum="4321" >
     <CustomDeliveryDetails />
   </Invoice>
  ')

select (select T.invoiceXML)
from @T as T
for xml path(''), root('Invoices')

Edit 1 Subquery ( select T.invoiceXML) does not have a column name, so it is deleted.

+4
source

Try:

SELECT cast(cast(InvoiceXML as nvarchar(max)) + '' as XML)
FROM whatever
FOR XML PATH(''), ROOT('Invoices')
+1
source

:

SELECT InvoiceXML.query('//Invoice')
  FROM <YOUR_TABLE>
FOR XML PATH('')
xpath FPR XML PATH : `FOR XML PATH ('//InvoiceXML')` >
0

All Articles