Return XML XML 查询中的单元格数据 SQL Server 2012

Return XML cell data in XML query with SQL Server 2012

我在 SQL Server 2012 中有一个 table,其中包含一些客户数据。 table 中的一列包含存储为 XML 的许可证数据。单元格的类型是 nvarchar(MAX)

是否可以使用 FOR XML(或其他方法)以便在返回数据时,许可证数据中的 XML 包含为 XML 而不是格式化的细绳?

如果我简单地使用 FOR XML RAW,那么结果是:

<Customers id="1" CustomerName="FirstCustomer" 
           LicenseData="&lt;license customerid=&quot;1&quot;&gt;...More data here...&lt;/license&gt;" />

我想得到的是:

<Customers id="1" CustomerName="FirstCustomer">
    <license customerid="1">
        ...More data here...
    </license>
</Customers>

有什么方法可以实现吗?

如果 XML 是有效片段,那么您可以简单地 CAST 将其 XML。

SELECT CAST(MyColumn as XML) as MyXml
declare @temp table (id int, customername nvarchar(128), data nvarchar(max))

insert into @temp
select 1, 'FirstCustomer', '<license customerid="1"><element id="2">data1</element><element id="3"/></license>'

select id, customername, cast(data as xml)
from @temp
for xml raw

你会得到这样的结果:

<row id="1" customername="FirstCustomer">
  <license customerid="1">
    <element id="2">data1</element>
    <element id="3" />
  </license>
</row>