打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SQL Server2005中使用XML-数据类型、查询与修改

SQL 2005引进了XML数据类型,可以直接将XML当作字符串直接存入该列。

这样可以不需要对它进行XML解析。


USE AdventureWorks

-- 创建一个送货排程表

CREATE TABLE Sales.DeliverySchedule

(ScheduleID int IDENTITY PRIMARY KEY,

 ScheduleDate DateTime,

 DeliveryRoute int,

 DeliveryDriver nvarchar(20),

 DeliveryList xml)

 

-- 插入 XML

INSERT INTO Sales.DeliverySchedule

VALUES(GetDate(), 3, 'Alice',

        '<?xml version="1.0" ?>

              <DeliveryList>

                  <Delivery SalesOrderID="43659">

                      <CustomerName>Steve Schmidt</CustomerName>

                      <Address>6126 North Sixth Street, Rockhampton</Address>

                  </Delivery>

                  <Delivery SalesOrderID="43660">

                       <CustomerName>Tony Lopez</CustomerName>

                       <Address>6445 Cashew Street, Rockhampton</Address>

                  </Delivery>

        </DeliveryList>')

 

SELECT * FROM Sales.DeliverySchedule

 

字段的方法:

value()是取得属性的值、或元素的文本

exist()是判断是否满足某种条件

query()获取子节点本身,返回的就是XML类型的数据

modify()修改- -replace /insert/ delete

modify('replace value of (某节点元素) with "内容"')

node()类似query(),取得子节点,将XML数据转换成表

 

 

-- 查询 Delivery 元素

SELECT  DeliveryDriver,

        DeliveryList.query('/DeliveryList/Delivery') As Deliveries

FROM    Sales.DeliverySchedule

-- 查询送货清单中第一个递送的地址,字段名.value( )取的是对应节点的值

--[1]:第一个Address元素

SELECT  DeliveryList.value('(/DeliveryList/Delivery/Address)[1]', 'nvarchar(100)') As DeliveryAddress

FROM    Sales.DeliverySchedule

WHERE   ScheduleID = 1

 

-- 查找为43659订单送货的送货员是谁?

SELECT DeliveryDriver

FROM   Sales.DeliverySchedule

--DeliveryList代表列名

--exist()代表方法

--@代表属性 (@SalesOrderID=43659

--1代表true2代表false

WHERE  DeliveryList.exist('/DeliveryList/Delivery[@SalesOrderID=43659]') = 1

 

-- 更改送货地址

UPDATE  Sales.DeliverySchedule

SET     DeliveryList.modify

        ('replace value of (/DeliveryList/Delivery/Address/text())[1]

        with "7194 Fourth St. Rockhampton"')

WHERE   ScheduleID = 1

 

可以在XML列上创建XML索引。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
SQLServer事务的隔离级别
30 分钟快快乐乐学 SQL Performance Tuning
在SQL Server 中为什么不建议使用 Not In 子查询
优化 SQL Server 查询性能
流程设计器
使用ActiveReports报表设计器绑定数据源及数据集——SQL数据源
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服