如何在SQL中从此XML获取所有值

时间:2012-02-02 14:12:56

标签: xml sql-server-2008 xquery

我试图弄清楚如何将一些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。

1 个答案:

答案 0 :(得分:4)

string添加到nodes函数,并使用.从当前节点获取值。

select 
    t.ArrayOfString.value('.','varchar(max)')
    from 
    @CrewXML.nodes('/ArrayOfString/string') as t(ArrayOfString)