【发布时间】:2017-12-23 05:33:18
【问题描述】:
我需要从 XML 中获取它在元素或属性中呈现的所有值。
例子:
DECLARE @XML = '<root>
<row1 attr1="x">1</row1>
<row2 attr2="x">2</row2>
</root>'
这里,我的预期输出:
Column Value
---------------------
row1 1
attr1 x
row2 1
attr2 x
我可以使用以下查询分别获取元素和属性值。
SELECT
element.value('local-name(.)', 'VARCHAR(50)'),
element.value('.', 'VARCHAR(100)')
FROM
@OldXML.nodes('/root/*') node(element)
SELECT
element.value('local-name(.)', 'VARCHAR(50)'),
element.value('.', 'VARCHAR(100)')
FROM
@OldXML.nodes('/root/row1/@*') node(element)
SELECT
element.value('local-name(.)', 'VARCHAR(50)'),
element.value('.', 'VARCHAR(100)')
FROM
@OldXML.nodes('/root/row2/@*') node(element)
但是,我需要在单个查询中获取值。
我浏览了很多方法,但找不到满足此要求的解决方案。
有什么办法吗?
【问题讨论】:
-
XML 支持高度特定于供应商 - 所以请添加标签以指定您是否使用
mysql、postgresql、sql-server、oracle或db2- 或完全不同的东西。
标签: mysql sql oracle postgresql sqlxml