SQLServer XML查询快速入门(18句话)

sql xml 入门: –by jinjazz 1、xml: 能认知成分、属性和值 2、xpath:
寻址语言,相近windows目录的追寻(没用过dir命令的话就去面壁)语法格式,这个语法能够组成为原则:
“.”表示友好,”..”表示父亲,”/”表示孙子,”//”表示后代,
“name”表示按名字查找,”@name”表示按属性查找 “集结[条件]”
表示依据条件取集结的子集,条件得以是 数 值:数字,last(卡塔尔,last(卡塔尔(قطر‎-数字 等
布尔值:position(State of Qatar数字,@name=’条件’,name=’条件’
条件是布尔值的时候能够统一总计:and or 3、xquery:
基于xpath标的准查询语言,sqlserver xquery包罗如下函数
exist(xpath条件卡塔尔国:再次回到布尔值表示节点是或不是留存
query(xpath条件State of Qatar:重返由相符条件的节点组成的新的xml文书档案value(xpath条件,数据类型卡塔尔:再次回到钦点的标量值,xpath条件结果必须独一nodes(xpath条件卡塔尔国: 重临由符合条件的节点组成的一行一列的结果表 */ declare
@data xml set @data=’ bookstore book category=”高管KING” title
lang=”en”伊夫ryday Italian/title authorGiada De Laurentiis/author
year2007/year price30.00/price /book book category=”CHILDREN” title
lang=”jp”Harry Potter/title authorJ K. Rowling/author year2006/year
price29.99/price /book book category=”WEB” title lang=”en”XQuery Kick
Start/title authorJames McGovern/author authorPer Bothner/author
author库尔特 Cagle/author author詹姆士 Linn/author authorVaidyanathan
Nagarajan/author year2000/year price49.99/price /book book
category=”WEB” title lang=”cn”Learning XML/title authorErik T.
Ray/author year2004/year price39.95/price /book /bookstore ‘
–测验语句,如若不亮堂语法请参见上面包车型大巴xpath法规和xquery函数说明–1、文书档案 select @data –2、任性品级是还是不是存在price节点 select
@data.exist(‘//price’卡塔尔国 –3、获取具备book节点 select
@data.query(‘//book’卡塔尔 –4、获取具备包蕴lang属性的节点 select
@data.query(‘//*[@lang]’卡塔尔(قطر‎ –5、获取第叁个book节点 select
@data.query(‘//book[1]’卡塔尔(قطر‎ –6、获取前四个book节点 select
@data.query(‘//book[position()=2]’State of Qatar –7、获取最终二个book节点 select
@data.query(‘//book[last()]’) –8、获取price35的所有book节点 select
@data.query(‘//book[price35]’) –9、获取category=”WEB”的所有book节点
select @data.query(‘//book[@category=”WEB”]’)
–10、获取title的lang=”en”的所有book节点 select
@data.query(‘//book/title[@lang=”en”]’) –11、获取title的lang=”en”且
price35的所有book节点 select @data.query(‘//book[./title[@lang=”en”]
or price35 ]’) –12、获取title的lang=”en”且
price35的第一book的(第一个)title select
@data.query(‘//book[./title[@lang=”en”] and price35
]’).value(‘(book/title)[1]’,’varchar(max)’) –13、等价于12 select
@data.value(‘(//book[./title[@lang=”en”] and price35
]/title)[1]’,’varchar(max)’) –14、获取title的lang=”en”且
price35的第一book的(第一个)title的lang属性 select
@data.value(‘((//book[@category=”WEB” and price35
]/title)[1]/@lang)[1]’,’varchar(max卡塔尔’State of Qatar –15、获取第一本书的title
select Tab.Col.value(‘(book/title卡塔尔[1]’,’varchar(max卡塔尔国’卡塔尔国 as title from
@data.nodes(‘bookstore’卡塔尔国as Tab(Col卡塔尔(قطر‎ –16、获取每本书的率先个author
select Tab.Col.value(‘author[1]’,’varchar(max卡塔尔国’State of Qatar as title from
@data.nodes(‘//book’)as Tab(Col卡塔尔(قطر‎ –17、获取具有book的有着消息 select
T.C.value(‘title[1]’,’varchar(max)’) as title,
T.C.value(‘year[1]’,’int’) as year,
T.C.value(‘title[1]’,’varchar(max)’)as title,
T.C.value(‘price[1]’,’float’) as price,
T.C.value(‘author[1]’,’varchar(max)’) as author1,
T.C.value(‘author[2]’,’varchar(max)’) as author2,
T.C.value(‘author[3]’,’varchar(max)’) as author3,
T.C.value(‘author[4]’,’varchar(max卡塔尔’卡塔尔(قطر‎ as author4 from
@data.nodes(‘//book’) as T(C卡塔尔国–18、获取不是朝鲜语(lang!=”jp”卡塔尔且价格高于35的书的具有音信 select
T.C.value(‘title[1]’,’varchar(max)’) as title,
T.C.value(‘year[1]’,’int’) as year,
T.C.value(‘title[1]’,’varchar(max)’)as title,
T.C.value(‘price[1]’,’float’) as price,
T.C.value(‘author[1]’,’varchar(max)’) as author1,
T.C.value(‘author[2]’,’varchar(max)’) as author2,
T.C.value(‘author[3]’,’varchar(max)’) as author3,
T.C.value(‘author[4]’,’varchar(max)’) as author4 from
@data.nodes(‘//book[./title[@lang!=”jp”] and price35 ]’) as T(C)