SQL Server XQuery 学习笔记(一)

MSDN 查询词:在 SQL Server 中使用 XML

 

1、XML 数据类型具有五个相关的方法:

query()、value()、exist()、modify()、nodes()

nodes() 方法用于将 XML 类型实例拆分为关系数据,如

declare @x xml

set @x = '<root>

    <row id="1"><name>Larry</name></row>

    <row id="2"><name>Joe</name></row>

    <row id="3" />

</root>'

Select c.query('.') Row From @x.nodes('/root/row') T(c)

返回值为

Row

----------------

<row id="1"><name>Larry</name></row>

<row id="2"><name>Joe</name></row>

<row id="3" />

注意:nodes() 方法返回的行集无法直接使用,只能配合 XML 数据类型方法使用(不包括 modify 方法,因为不能修改返回的行集),另外,也可用于 IsNull 和 Count 函数中。

另外,在 XML 数据类型方法中的表达式是区分大小写的。

2、类型化与非类型化的 XML:所谓类型化的 XML,就是与架构相关联的 XML 文档或片断,将 XML 类型与架构关联的方式如下:

declare @x xml(SchemaCollection)

create table t(

        Col1 int,

        Col2 xml(SchemaCollection))

SchemaCollection 必须通过T-SQL语句创建或引入:

        Create Xml Schema Collection

3、创建 XML 类型的字段时,可以定义字段级和表级的约束,但不能使用 XML 数据类型方法。有一个折衷的办法,就是定义一个函数,然后在函数中使用 XML 数据类型的方法验证,最终在建立约束时使用这个函数。如:

Create Function my_udf(@var xml) returns bit

As Begin

Return @var.exist('/root/@id')

End

建立约束

Create Table T1(

        Col1 int primary key,

        Col2 xml check(dbo.my_udf(Col2) = 1))

同样,在基于 XML 类型的字段创建计算列时,也不能使用 XML 数据类型方法,解决方法同上。

4、直接处理或生成 XML 文档可使用 OpenXml 和 For Xml 语句(SQL 2000 即支持)。

使用 OpenXml 语句前要执行存储过程 sp_xml_preparedocument,如:

Exec sp_xml_preparedocument @docHandle Output, @xmlDoc;

检索完后应调用 sp_xml_removedocument 释放内存,如:

Exec sp_xml_removedocument @docHandle

上述的 @docHandle 是整型值。

5、XML 实例是作为二进制大对象存储在 XML 类型列中的。若对 XML 实例的查询比较频繁,应为 XML 类型列建立索引。XML 类型列索引分为:主 XML 索引和辅助 XML 索引。辅助索引可分为 path、value 和 property。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值