nodes方法
nodes方法用于把一组由一个查询返回的结点转换成一个类似于结果集的表中的一组记录行该方法的语法如下
nodes (XQuery) Table(Column)
这里XQuery是选择要暴露为一个结果集的结点的表达式Table和Column用于指定结果集中的名字注意你仅可以操作一列并且它的自动类型为XML例如为了查询并得到每一个投球手的信息你可以编写如下的代码
DECLARE @doc xml
SELECT @doc =
<Team name=Braves>
<Players>
<Pitcher name=John Smoltz role=Closer>
With team since
</Pitcher>
</Players>
</Team>
SELECT Teamplayerquery() as Pitcher
FROM @docnodes(/Team/Players/Pitcher)
Team(player)
这些在单个结果集中的结果包含相应于每一个投球手的元素的行数据
Pitcher
<Pitcher name=John Smoltz role=Closer />
<Pitcher name=Russ Ortiz role=Starter />
( row(s) affected)
注意上面你使用了query方法把这些结点返回到结果中其原因在于一个nodes方法的结果可能仅能为XML方法(查询修改删除和更新)或IS NULL和IS NOT NULL语句所参考
一般地你可以使用nodes方法把XML分解为一组更为有用的结果例如你可以使用nodes方法得到运动员的结点然后使用value方法检索它们以便得到作为标量数据的单个值
SELECT Teamplayervalue(
/@name nvarchar()) as Name
Teamplayervalue(/@role nvarchar()) as
PlayerRole
FROM @docnodes(/Team/Players/Pitcher)
Team(player)
这会产生如下的结果
Name PlayerRole
John Smoltz Closer
Russ Ortiz Starter
( row(s) affected)
[] [] [] []