在SQL Server 2016中解析XML

在SQL Server 2016中解析XML,xml,sql-server-2016,Xml,Sql Server 2016,我需要关于为什么我接收两个空值作为“结果”而不是接收“批准”文本的指导 DECLARE@xml SET@xml= 经核准的 有价值的东西 ' 挑选 b、 值(“(/ChildProperty[@name=“Decision”]/text())[1]”,作为结果的“VARCHAR(100)” 从…起 @xml.nodes('/Process/DataArea/UserArea/Property')作为a(b) 您已经非常接近了-您只需确保在计算ChildProperty的表达式中不要再次从根中选

我需要关于为什么我接收两个空值作为“结果”而不是接收“批准”文本的指导

DECLARE@xml
SET@xml=
经核准的
有价值的东西
' 
挑选
b、 值(“(/ChildProperty[@name=“Decision”]/text())[1]”,作为结果的“VARCHAR(100)”
从…起
@xml.nodes('/Process/DataArea/UserArea/Property')作为a(b)

您已经非常接近了-您只需确保在计算
ChildProperty的表达式中不要再次从根中选择

将代码更改为:

SELECT
    b.value('(ChildProperty[@name="Decision"]/text())[1]', 'VARCHAR(100)') AS result
FROM   
    @xml.nodes('/Process/DataArea/UserArea/Property') AS a(b)
你有这个:

b.value('(/ChildProperty[@name="Decision"]/

注意
/
子属性之前的
/
——这将从根开始搜索。您需要在您所在的上下文中进行搜索-因此我删除了示例中的前导正斜杠。

XML支持与供应商高度相关-因此请添加一个标记,以指定您是否正在使用
mysql
postgresql
sql server
oracle
db2
-或其他完全不同的东西。@marc_更新了标题。@marc_更新了标记。谢谢,成功了。感谢您澄清“/”行为。
b.value('(/ChildProperty[@name="Decision"]/