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="<license customerid="1">...More data here...</license>" />
我想得到的是:
<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>
我在 SQL Server 2012 中有一个 table,其中包含一些客户数据。 table 中的一列包含存储为 XML 的许可证数据。单元格的类型是 nvarchar(MAX)
。
是否可以使用 FOR XML
(或其他方法)以便在返回数据时,许可证数据中的 XML 包含为 XML 而不是格式化的细绳?
如果我简单地使用 FOR XML RAW,那么结果是:
<Customers id="1" CustomerName="FirstCustomer"
LicenseData="<license customerid="1">...More data here...</license>" />
我想得到的是:
<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>