SQL2008 详解直接将详解直接将XML存入到存入到SQL中中
一、前言一、前言
从 SQL Server 2005 开始,就增加了 xml 字段类型,也就是说可以直接把 xml 内容存储在该字段中,并且 SQL Server 会把
它当作 xml 来对待,而不是当作 varchar 来对待。
随着SQL Server 对XML字段的支持,相应的,T-SQL语句也提供了大量对XML操作的功能来配合SQL Server中XML字段的使
用。本文主要说明如何使用SQL语句对XML进行操作。
二、定义二、定义XML字段字段
在进行数据库的设计中,我们可以在表设计器中,很方便的将一个字段定义为XML类型。需要注意的是,XML字段不能
用来作为主键或者索引键。同样,我们也可以使用SQL语句来创建使用XML字段的数据表,下面的语句创建一个名为“docs”的
表,该表带有整型主键“pk”和非类型化的 XML 列“xCol”:
CREATE TABLE docs (pk INT PRIMARY KEY, xCol XML not null)
XML类型除了在表中使用,还可以在存储过程、事务、函数等中出现。下面我们来完成我们对XML操作的第一步,使用SQL
语句定义一个XML类型的数据,并为它赋值:
set @xmlDoc='<?xml version="1.0" ?>
<books>
<book id="0001">
<title>C Program</title>
<author>David</author>
<price>21</price>
</book>
<book id="0002">
<title>你必须知道的.NET</title>
<author>王涛</author>
<price>79</price>
</book>
</books>'
select @xmlDoc
三、三、XML字段注意点字段注意点
三、XML字段注意点
SQL Server 中以 Unicode(UTF-16) 来存储 XML 数据。
XML 字段最多可存储 2G 的数据。
可以像插入字符串一样向 XML 字段写入内容。
当在 xml 数据类型实例中存储 XML 数据时,不会保留 XML 声明(如 <?xml version=’1.0’?>)。
插入的 xml 内容的属性的顺序可能会与原 xml 实例的顺序变化。
不保留属性值前后的单引号和双引号。
不保留命名空间前缀。
可以对 XML 字段中的 XML 内容建立索引。
可以对 XML 字段中的 XML 内容建立约束,比如 age 节点必须大于等于 18。
可以通过创建架构来对 XML 进行类型化,比如让 xml 内容的 <user> 节点下面必须有 <fullname> 节点。
四、查询操作四、查询操作
在定义了一个XML类型的数据之后,我们最常用的就是查询操作,下面我们来介绍如何使用SQL语句来进行查询操作的。
在T-Sql中,提供了两个对XML类型数据进行查询的函数,分别是query(xquery)和value(xquery, dataType),其
中,query(xquery)得到的是带有标签的数据,而value(xquery, dataType)得到的则是标签的内容。接下类我们分别使用这两个