SQL Server XML解析第一个节点属性

mro*_*ron 2 xml t-sql sql-server xquery

我在数据库中有一个 XML 列,可能看起来像这样:

<sql-connection-info name="myname" server="(local)\SQLEXPRESS" other-attribute="value" />

<oracle-connection-info name="othername" server="address" other-attribute="value" />
Run Code Online (Sandbox Code Playgroud)

等等。节点和属性的名称几乎可以是任何名称。我需要迭代第一个节点上的属性/值对。我见过的每个样本都是已知的节点/属性名称。

当我尝试使用时

@xmlColumn.query("/@*")
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

XQuery [query()]:不支持顶级属性节点。

这在 TSQL 中可能吗?如果是的话我该怎么做?

Mik*_*son 5

declare @xmlColumn xml = '<sql-connection-info name="myname" server="(local)\SQLEXPRESS" other-attribute="value" />'

select T.N.value('local-name(.)', 'varchar(max)') as Name,
       T.N.value('.', 'varchar(max)') as Value
from @xmlColumn.nodes('//@*') as T(N)
Run Code Online (Sandbox Code Playgroud)

结果:

Name              Value
----------------  -------------------
name              myname
server            (local)\SQLEXPRESS
other-attribute   value
Run Code Online (Sandbox Code Playgroud)