领测软件测试网
nodes方法
软件测试技术门户
U.Q7p2g
FGM8t)AO?~ nodes方法用于把一组由一个查询返回的结点转换成一个类似于结果集的表中的一组记录行。该方法的语法如下:
6Op
Ls*vg%_:IN#P x3mNnodes (XQuery) Table(Column)
软件测试技术门户}Tcd d | 这里,XQuery是选择要暴露为一个结果集的结点的表达式。Table和Column用于指定结果集中的名字。注意,你仅可以操作一列并且它的自动类型为XML。例如,为了查询并得到每一个投球手的信息,你可以编写如下的代码:
+B,QF:s!W"\软件测试技术门户2U&dl#B2`%UDECLARE @doc xml
7vw7\8MTWSELECT @doc = '
.nf2?.[aI1uL<Team name="Braves">
e(xy$m`a7a,C)Y<Players>
/? JFJ?~8A<Pitcher name="John Smoltz" role="Closer">
qg#V?h3_(VrXcWith team since 1989
A5EZv0J]Gy!}l</Pitcher>
软件测试技术门户8U"e |!l
Q:T</Players>
软件测试技术门户.E\8ZK{/hc/}m</Team>'
J
pp"Gk6vd2yy;y8wjSELECT Team.player.query('.') as Pitcher
软件测试技术门户*i:X&T2]\I9b:xFROM @doc.nodes('/Team/Players/Pitcher')
7lEQj$D p)A$oTeam(player)
软件测试技术门户2^ @{8N&Z+IC!hAK 这些在单个结果集中的结果包含相应于每一个投球手的元素的行数据:
7E,B Xx \8b8m ]PnF软件测试技术门户 S;_+gC6hZ/?i~Pitcher
|-F)RHeM,Gv0E--------------------------------------------
软件测试技术门户s9rd8[B!],d<Pitcher name="John Smoltz" role="Closer" />
软件测试技术门户klJPw'Xk*Pz<Pitcher name="Russ Ortiz" role="Starter" />
软件测试技术门户^M sb7b6|)z(2 row(s) affected)
5PdzO!eDtN 注意,上面你使用了query方法把这些结点返回到结果中。其原因在于,一个nodes方法的结果可能仅能为XML方法(查询,修改,删除和更新)或IS NULL和IS NOT NULL语句所参考。
软件测试技术门户mC_y(N;hq,Ncj软件测试技术门户;VUw8~YRN-CeZa
j 一般地,你可以使用nodes方法把XML分解为一组更为有用的结果。例如,你可以使用nodes方法得到运动员的结点,然后使用value方法检索它们以便得到作为标量数据的单个值:
软件测试技术门户"iP)G!d}'oqeT(h"|9oF3Y4t`SELECT Team.player.value(
软件测试技术门户&T(CTA6cY'./@name', 'nvarchar(10)') as Name,
软件测试技术门户3o]\J5rTeam.player.value('./@role', 'nvarchar(10)') as
软件测试技术门户!LW7n|!XPlayerRole