• 软件测试技术
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘

字号: | 推荐给好友 上一篇 | 下一篇

SQL Server2005的XML数据类型之基础篇

发布: 2008-4-18 10:21 | 作者: 朱先忠 | 来源: 天极yesky | 查看: 29次 | 进入软件测试论坛讨论

领测软件测试网  nodes方法软件测试技术门户 U.Q7p2g FG

M8t)AO?~  nodes方法用于把一组由一个查询返回的结点转换成一个类似于结果集的表中的一组记录行。该方法的语法如下:
6Op Ls*vg
%_:I N#P x3mNnodes (XQuery) Table(Column)软件测试技术门户}Tcd d |
  这里,XQuery是选择要暴露为一个结果集的结点的表达式。Table和Column用于指定结果集中的名字。注意,你仅可以操作一列并且它的自动类型为XML。例如,为了查询并得到每一个投球手的信息,你可以编写如下的代码:
+B,QF:s!W"\软件测试技术门户2U&dl#B2`%U
DECLARE @doc xml
7vw7\8MT WSELECT @doc = '
.nf2?.[aI1uL<Team name="Braves">
e(xy$m`a7a,C)Y<Players>
/? JFJ ?~8A<Pitcher name="John Smoltz" role="Closer">
qg#V?h3_(V rXcWith 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:x
FROM @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
软件测试技术门户;V Uw8~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]\J5r
Team.player.value('./@role', 'nvarchar(10)') as 软件测试技术门户!LW7n|!X
PlayerRole