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

Pur*_*ish 1 xml xquery sql-server-2008

我试图弄清楚如何从传递给SQL查询的XML中获取所有字符串值,即使看了几个示例,也无法弄清楚。谁能指出我哪里出问题了?谢谢

我的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>'
Run Code Online (Sandbox Code Playgroud)

到目前为止,我将其作为代码:

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

我只能得到XML的第一行,我猜这是由于[1]引起的,但是我似乎找不到找到获取元素中所有值的方法。

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

Mik*_*son 5

添加string到节点功能,并使用从当前节点获取值.

select 
    t.ArrayOfString.value('.','varchar(max)')
    from 
    @CrewXML.nodes('/ArrayOfString/string') as t(ArrayOfString)
Run Code Online (Sandbox Code Playgroud)