使用FOR XML PATH从XMLTYPE列中进行选择时如何删除列名

Dav*_*vid 5 xml sql t-sql for-loop xmltype

我有一个表格,其中包含名为"InvoiceXML"的XMLTYPE列.

此列中的数据是以下形式的XML:

<Invoice CustomerNum="1234" >
<CustomDeliveryDetails />
</Invoice>
Run Code Online (Sandbox Code Playgroud)

当我做的时候

SELECT ... FOR XML PATH(''), ROOT('Invoices') 
Run Code Online (Sandbox Code Playgroud)

我最终得到:

<Invoices>
 <InvoiceXML>
  <Invoice CustomerNum="1234" >
  <CustomDeliveryDetails />
  </Invoice>
 </InvoiceXML>
</Invoices>
Run Code Online (Sandbox Code Playgroud)

如何停止输出中出现的列名InvoiceXML?

Mik*_*son 5

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')
Run Code Online (Sandbox Code Playgroud)

编辑 1子查询 ( select T.invoiceXML) 没有列名,因此将其删除。


Cad*_*oux 1

尝试:

SELECT cast(cast(InvoiceXML as nvarchar(max)) + '' as XML)
FROM whatever
FOR XML PATH(''), ROOT('Invoices')
Run Code Online (Sandbox Code Playgroud)