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

如何在SQL中从此XML获取所有值,xml,sql-server-2008,xquery,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/XML

我正在试图弄清楚如何将一些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>'
这只获取XML的第一行,我想这是因为[1],但是我似乎找不到一种方法来获取元素中的所有值

理想情况下,这将返回一列多行,XML中的每个条目对应一行。

向nodes函数添加字符串,并使用..从当前节点获取值

向nodes函数添加字符串,并使用..从当前节点获取值

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