在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"]/