sqlserver中xml查询

DECLARE  @DOC XML  = '
<books>
<book category="C#"> 
  <title language="en">C# in Depth</title> 
  <author>John Skeet</author> 
  <year>2010</year> 
  <price>62.30</price> 
</book> 
<book category="C#"> 
  <title language="cn">Effective C#</title> 
  <author>Bill Wagner</author> 
  <year>2010</year> 
  <price>49.00</price> 
</book>
<book category="MSSQL"> 
  <title language="cn">SQL2008 技术内幕</title> 
  <author>Itzik Ben-Gan</author> 
  <year>2010</year> 
  <price>90.20</price> 
</book>
<book category="javascipt">
<title language="cn">JavaScript权威指南</title>
<author>David Flanagan</author>
<year>2007</year> 
<price>87.20</price>
</book>
</books>
';
-- 查询所有书籍的分类
SELECT 
     T.C.value( ' @category ', ' VARCHAR(16) ')
FROM  @DOC.nodes( ' /books/book 'AS T (C);
-- 查询所有C#书籍的名称,作者,价格,年份
WITH B  AS
(
     SELECT  @DOC.query( ' //book[@category="C#"] 'AS BookNode
)
SELECT 
    T.C.value( ' title[1]/@language ', ' VARCHAR(32) 'AS  [ language ],
    T.C.value( ' title[1] ', ' VARCHAR(32) 'AS title,
    T.C.value( ' author[1] ', ' VARCHAR(16) 'AS author,
    T.C.value( ' year[1] ', ' INT 'AS  [ year ],
    T.C.value( ' price[1] ', ' DECIMAL(19,2) 'AS price
FROM B
CROSS APPLY B.BookNode.nodes( ' /book 'AS T (C);
-- 查询所有书籍的语言和名称
SELECT 
    T.C.value( ' @language[1] ', ' varchar(56) 'AS  [ Language ],
    T.C.value( ' . ', ' VARCHAR(56) 'AS TITLE
FROM  @DOC.nodes( ' /books/book/title 'AS T (C);

转载于:https://www.cnblogs.com/pnljs/p/3536151.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值