2006-09-18

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

来源: 天极开发 作者:佚名 评论 0 条
 
into | after | before} LocationExpression
)

  紧跟着这个insert语句的是你想要插入的XML(InsertExpression)。接下来,你需要指定你想怎样插入该XML。你的选择是into,after或before。其中,before和after子句指令数据库把InsertExpression作为LocationExpression的一个兄弟(sibling)插入。before或after则指定是在LocationExpression的前面还是后面插入它:

SET @doc.modify('
insert <Pitcher role="Starter"
name="Jaret Wright"/>
before (/Team/Players/Pitcher)[1]
')


  这个into子句把InsertExpression作为LocationExpression的一个孩子结点插入。可选子句as first和as last用于指定在该孩子结点中插入的位置:



  --在小组内进行插入

SET @doc.modify('
insert <Pitcher role="Starter"
name="Jaret Wright"/>
into (/Team/Players)[1]
')

  --在小组内进行插入,指定它应该

  --作为最后一个元素插入

SET @doc.modify('
insert <Pitcher role="Starter"
name="Jaret Wright"/>
as last into (/Team/Players)[1]
')

  delete语句的语法很直接:

delete LocationExpression

  这个LocationExpression指定要从XML数据中删除什么内容。例如,要删除所有的投球手:

SET @doc.modify('delete/Team/Player/Pitcher')

  因为查询指定所有的投球手元素,所以它们将被全部删除。假如你想仅删除一个元素,那么你可以指定标识属性。例如,为了仅删除投球手John Smoltz,你可以编写如下的delete语句:

SET @doc.modify('
delete /Team/Players/Pitcher[@name="John Smoltz"]
')

  你可以使delete语句删除单个属性。例如,为了删除针对投球手John Smoltz的role属性,相应的XML DML看上去如下所示:

SET @doc.modify('
delete /Team/Players/Pitcher[
@name="John Smoltz"]/@role')

  最后,replace value语句描述了对XML数据的修改。这个replace value语句的语法如下:

replace value of
OriginalExpression
with
ReplacementValue | if

  这个replace value语句用来修改在XML中的值。唯一可能的值是一个标签的内容或一个属性的值。这个OriginalExpression必须解析为单个结点或属性。这个ReplacementValue通常是一个要代替的值。代替一个结点的内容要求使用text()函数的XQuery表达式来指定你想代替一个结点的文本。例如,为了替换一个投球手的内部文本(inner text),你可以编写类似如下的Modify语句:

DECLARE @doc xml
SELECT @doc = '
<Team name="Braves">
<Players>
<Pitcher name="John Smoltz" role="Closer">
With team since 1989
</Pitcher>
</Players>
</Team>'
SET @doc.modify('
replace value of (/Team/Players/Pitcher[
@name="John Smoltz"]/text())[1]
with "May start in 2005"
')

  修改属性是直接的:你只需要使用XQuery表达式来解析单个属性。例如,为了使用"Starter"替换投球手John Smoltz的role属性的值,你可以编写如下的语句:
共5页: 上一页 [1] [2] [3] 4 [5] 下一页
(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:使用Microsoft SQL Server 2000的XML查询  
下一篇:MS SQLSERVER中如何快速获取表的记录总数
    评论加载中…
 热门排行
 推荐文章
     

 相关文章
网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号