我在下面定义了XML变量及其值。
我想在单个查询中获取标记<TextNodeChild>
之间定义的文本。
请帮助。
Declare @XMLVariable =
'<?xml version="1.0"?>
<root>
<TextNodeParent>
<TextNodeChild>12345</TextNodeChild>
<TextNodeChild>67890</TextNodeChild>
<TextNodeChild>12389</TextNodeChild>
</TextNodeParent>
</root>'
我需要这样的输出:
12345
67890
12389
答案 0 :(得分:0)
您可以使用XQuery(即XML
查询).nodes()
方法
SELECT
TextNodeParent = n.value('.[1]', 'NVARCHAR(max)')
FROM
@XMLVariable.nodes('root/TextNodeParent/*') as p(n)
编辑:如果您只想选择TextNodeChild
节点数据,那么xml
路径几乎没有变化,如下所示
@XMLVariable.nodes('root/TextNodeParent/TextNodeChild') as p(n)
结果
TextNodeParent
12345
67890
12389
答案 1 :(得分:0)
@ YogeshSharma的解决方案在这里工作 - 因为你的<TextNodeChild>
节点下只有<TextNodeParent>
元素。
但是,如果您有各种节点,并且想要提取仅 <TextNodeChild>
个并获取其值(并忽略所有其他节点),则必须使用这样的事情:
SELECT
TextNodeParent = XC.value('.', 'INT')
FROM
@XMLVariable.nodes('root/TextNodeParent/TextNodeChild') as XT(XC)