sqlserver2005提供的xml数据类型操作xml串
发布时间:2020-12-12 13:31:14 所属栏目:MsSql教程 来源:网络整理
导读:DECLARE @data XMLSET @data = ' bookstore book category= " WEB " price= " 50 " year= " 2009 " title lang= " en " asp.net/titleauthor董浩/authorauthor钱多多/author/bookbook category= " 计算机 " price= " 37 " year= " 2012 " title lang= " chs
DECLARE @data XML SET @data='<bookstore> <book category="WEB" price="50" year="2009"><title lang="en">asp.net</title><author>董浩</author><author>钱多多</author></book> <book category="计算机" price="37" year="2012"><title lang="chs">java入门</title><author>蔡得志</author></book> </bookstore>' SELECT @data --获取category="WEB"且 price>35的第一book的(第一个)title的lang属性 select @data.value('((//book[@category="WEB" and @price>35 ]/title)[1]/@lang)[1]','varchar(max)') /*output: en */ --获取第一本书的title select @data.value('(/bookstore/book[position()=1]/title)[1]','varchar(max)') AS 'titleOf1stBook' --========根据属性名称查询--======== --获取第一个book节点的名为category的属性值 DECLARE @attr VARCHAR(20) SELECT @attr = 'category' select @data.value('(/bookstore/book/@*[local-name()=sql:variable("@attr")])[1]','VARCHAR(20)') /*output: asp.net */--========映射为表结构查询--======== --获取每本书的第一个author select Tab.Col.value('author[1]','varchar(max)') as author from @data.nodes('//book')as Tab(Col) --获取所有book的所有信息 select T.C.value('title[1]','varchar(max)') as title,T.C.value('@year[1]','int') as year,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 from @data.nodes('//book') as T(C) --获取不是日语(lang!="jp")且价格大于35的书的所有信息 select T.C.value('title[1]','varchar(max)') as author3 from @data.nodes('//book[./title[@lang!="jp"] and @price>35 ]') as T(C) --========模糊查询--========= --查询第一个book节点的第一个属性值 SELECT @data.value('(/bookstore/book[1]/@*[position()=1])[1]','VARCHAR(20)') /*output: COOKING */ --=========查询属性数量--========= --查询第一个book节点的属性数量 SELECT @data.value('count(/bookstore/book[1]/@*)','INT') /*output: */ ? 更多可参见:http://www.cnblogs.com/FlyingPig-Nannan/articles/1968917.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |