从SQL Server 2017中的XML查询值

时间:2018-10-17 14:56:31

标签: sql-server xml

我正在努力从XML查询值。我是这个世界的新人,所以如果答案确实很明显,而我却没有看到它,请原谅我:)

<documentid>
    <id accountingentity="200" lid="...."
        variationid="6370">aa0000012</id>
</documentid>

我想查询值“ aa0000012”,但是由于没有可用的该值的Xpath,所以我无法执行该操作。

我在这里使用此查询进行了尝试,但这只是给了我全部内容:

select
    @salesorderxml.query('/syncsalesorder/dataarea/salesorder/salesorderheader/documentid/id')

有人可以帮助我吗?谢谢

2 个答案:

答案 0 :(得分:2)

无论您是否有多个documentid,这都应该有效

select  o.value('id[1]', 'varchar(max)')
from    @salesorderxml.nodes('/documentid') as t(o)

它基本上说给我一个名为documentid的节点,然后给我元素id的值

答案 1 :(得分:0)

尝试一下-它会进入XML并获取<id>的元素值:

SELECT
    XC.value('text()[1]', 'varchar(100)')
FROM
    @salesorderxml.nodes('/documentid/id') AS XT(XC)

这将返回:

(No column name)
----------------
aa0000012