我有一个表,该表具有以字符串形式存储的xml内容(所有内容都放在xml数据类型之前)。这是一个例子:
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfLibAddress xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<libAddress Address="11" Type="User" />
<libAddress Address="79" Type="User" />
<libAddress Address="18" Type="UserGroup" />
<libAddress Address="19" Type="UserGroup" />
<libAddress Address="5" Type="MailGroup" />
<libAddress Address="7" Type="MailGroup" />
<libAddress Address="[email protected]" Type="EmailAddress" />
<libAddress Address="[email protected]" Type="EmailAddress" />
</ArrayOfLibAddress>
我需要的是一条T-SQL语句,该语句将返回以下内容:
Address Type
11 User
79 User
18 UserGroup
19 UserGroup
5 MailGroup
7 MailGroup
[email protected] EmailAddress
[email protected] EmailAddress
例如,如果将此值加载到变量中:
DECLARE @x xml = '{the xml content above}'
那我怎么把它变成桌子呢?
我找到了一些示例,可以让我为属性与某个特定值匹配的元素提取单个值,但是找不到一个示例,该示例说明了如何为将文档转换成表格结果。
您可以使用nodes
来查询xml变量:
SELECT
T.addresses.value('./@Address', 'nvarchar(max)') [Address],
T.addresses.value('./@Type', 'nvarchar(max)') [Type]
FROM
@x.nodes('//libAddress') T(addresses)
有关更多信息,请参见MSDN上的nodes()方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句