加入收藏夹        

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

 exist方法

  这个exist方法用于决定是否一个查询能够产生任何结果。这个exist方法的语法形式如下:

exist(XQuery)

  当你使用这个exist方法时,它计算这个XQuery查询,并且如果该查询产生任何结果的话返回值1。例如,下面语句查询小组表行中是否TeamDoc域中存有Starter投手:

  --下面是简单的Exist语句:

SELECT Count(*)
FROM Team
WHERE TeamDoc.exist(
'/Team/Players/Pitcher[@role="Starter"]') = 1

  value方法

  当你不想解释整个查询的结果而只想得到一个标量值时,这个value方法是很有帮助的。这个value方法用于查询XML并且返回一个原子值。这个value方法的语法如下:

value(XQuery,datatype)

  借助于value方法,你可以从XML中得到单个标量值。为此,你必须指定XQuery语句和你想要它返回的数据类型,并且你可以返回除了XML数据类型外的任何数据类型。例如,如果你想得到每一个小组中的第一个投球手的名字,你可以编写如下形式的查询语句:

  --进行一次查询以得到单个值

SELECT TeamDoc.value(
'(/Team/Players/Pitcher/@name)[1]',
'nvarchar(max)')
AS FirstPitcher
FROM Team

  在每一个小组的第一个投球手的标量值中的这个查询结果返回值如下:

FirstPitcher
------------------------------
John Smoltz
(1 row(s) affected)

  注意,query和value方法之间的不同在于,query方法返回一个XML数据类型-它包含查询的结果;而value方法返回一个带有查询结果的非XML数据类型。另外,value方法仅能返回单个值(或标量值)。如果你试图创建一个使用value方法返回多于一个值的XQuery表达式,你将得到一个错误。

 

共5页: 上一页 [1] [2] 3 [4] [5] 下一页
posted @ 2008-04-07 21:13  Robert.H.fu  阅读(299)  评论(0编辑  收藏  举报