我试图弄清楚如何将一些XML中的所有字符串值传递到SQL查询中,即使看了几个例子,我也无法弄清楚这一点。任何人都可以指出我哪里出错了?感谢
我的XML是:
DECLARE @CrewXML XML = N'<?xml version="1.0" encoding="utf-16"?>
<ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<string>A</string>
<string>E</string>
<string>J</string>
</ArrayOfString>'
到目前为止,我将此作为我的代码:
select
t.ArrayOfString.value('string[1]','varchar(max)')
from
@CrewXML.nodes('/ArrayOfString') as t(ArrayOfString)
这只得到XML的第一行,我猜是由于[1],但我似乎找不到获取元素中所有值的方法。
理想情况下,这将返回一列包含多行,每行包含一行XML。
答案 0 :(得分:4)
将string
添加到nodes函数,并使用.
从当前节点获取值。
select
t.ArrayOfString.value('.','varchar(max)')
from
@CrewXML.nodes('/ArrayOfString/string') as t(ArrayOfString)