国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

SQL中XQuery/XML的應用

2019-11-06 08:49:19
字體:
來源:轉載
供稿:網友

xml及SQL作為兩種存儲數據的主流方式,各自有各自的優勢.為此主流的數據庫產品中陸續的加入了對XML的支持.

1.對于SQL返回的結果集可以對其進行XML轉換.

2.在MS SQL2005中加入了XML類型.允許將XML數據存入對應的表列中,并且也實現了結合XQuery(部分功能未實現)來對XML數據進行操作的功能.

創建對應的數據庫及表信息.

create database people;use people;create table people (id int identity PRimary key,firstname text not null,lastname text not null,age int not null,sex varchar(10) not null)初始化數據.

insert into people values ('Ricky','Lin',30,'male');insert into people values ('Jennie','Lin',30,'female');查詢數據并以XML格式返回.

select id [@id],firstname [name/firstname],lastname [name/lastname],age [age],sex [sex] from people for xml path('person'),root('people')獲取到的結果.

<people>  <person id="1">    <name>      <firstname>Ricky</firstname>      <lastname>Lin</lastname>    </name>    <age>30</age>    <sex>male</sex>  </person>  <person id="2">    <name>      <firstname>Jennie</firstname>      <lastname>Lin</lastname>    </name>    <age>30</age>    <sex>female</sex>  </person></people>另外還有for xml auto / for xml raw 等選項也可以支持XML輸出.并可以添加對應的參數來豐富輸出的格式.

2.SQL對于XML的支持更重要的表現在XML類型的存儲和操作.以下主要說明的是modify/query這兩個函數.其中主要的應用是針對XQuery.

declare @original xml;set @original = '<person>	<firstname>Ricky</firstname>	<lastname>Lin</lastname></person>';/*modify*/declare @delete xml;declare @insert xml;declare @replace xml;set @delete = @original;set @insert = @original;set @replace = @original;set @delete.modify('delete /person/*[1]') ;select @delete 'delete';/*delete firstname element.*/set @insert.modify('insert <middle>OK</middle> after (/person/firstname)[1]');select @insert 'insert';/*insert the middle name after firstname*/declare @replacement varchar(20);set @replacement = 'Jennie';set @replace.modify('replace value of (/person/firstname/text())[1] with sql:variable("@replacement")');select @replace 'replace';/*replace the firstname 'Ricky' to 'Jennie'*/

modify函數主要提供了三種方式對XML類型數據的修改.

delete/replace/insert. 其參數中主要應用了XQuery/XPath來獲取對應的節點以供操作.

以下例子是使用query函數來處理帶名稱空間的的情況.

declare @data xml;set @data = '<person xmlns="http://www.ricky.com">	<firstname>Ricky</firstname>	<lastname>Lin</lastname></person>';select @data.query('	declare namespace ricky = "http://www.ricky.com";	<name>{ricky:person/ricky:firstname/text()}-{ricky:person/ricky:lastname/text()}</name>') result;在SQL與XML結合使用的過程中,主要的應用實現行是針對于XQuery.當然或許現階段SQL并無法完全的兼容XQuery語法.但是已經足夠了日常需求.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三明市| 仪陇县| 纳雍县| 东光县| 颍上县| 苍梧县| 广饶县| 泊头市| 岢岚县| 富顺县| 乐至县| 开江县| 娄底市| 衡山县| 荥经县| 肥东县| 临汾市| 宜宾市| 正定县| 西充县| 伽师县| 吉安县| 德惠市| 泸水县| 博客| 启东市| 齐河县| 泸定县| 岳普湖县| 岳西县| 兴安盟| 宁明县| 石泉县| 乌海市| 台安县| 闸北区| 神木县| 新邵县| 望江县| 齐齐哈尔市| 林州市|