SQLServer XML Query

本文介绍了如何在SQLServer中使用XML查询。首先展示了查询所有书籍分类的方法,接着详细阐述了如何获取所有C#书籍的名称、作者、价格和年份,最后演示了查询所有书籍的语言和名称的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值