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

sqlserver中xml查询的更多相关文章

  1. SQL SERVER中XML查询:FOR XML指定PATH

    SQL SERVER中XML查询:FOR XML指定PATH 前言 在SQL SERVER中,XML查询能够指定RAW,AUTO,EXPLICIT,PATH.本文用一些实例介绍SQL SERVER中指 ...

  2. sqlserver中怎么查询字段为空的记录

    sqlserver中怎么查询字段为空的记录的两种方法: 详细介绍请查看全文:https://cnblogs.com/qianzf/ 原文博客的链接地址:https://cnblogs.com/qzf/

  3. SqlServer中的查询简单总结

    一.sql语句的执行顺序 查询时数据库中使用最多的操作,一条sql语句的查询顺序是 1.from Tb1 [ join on ]   得到查询的数据源 2.where    对数据过滤(单条数据上过滤 ...

  4. SqlServer中循环查询结果集

    ); begin ; open c_test_main;--打开游标 --开始循环 begin fetch next from c_test_main into @id,@value; --赋值到变量 ...

  5. XML 在SQLServer中的使用

    SQL Server对于XML支持的核心在于XML数据的格式,这种数据类型可以将XML的数据存储于数据库的对象中,比如variables, columns, and parameters.当你用XML ...

  6. SQLServer中查询的数字列前面补0返回指定长度的字符串

    SQLServer中查询的数字列前面补0返回指定长度的字符串: 如: 角本如下: /****** Script for SelectTopNRows command from SSMS ******/ ...

  7. Oracle&SQLServer中实现跨库查询

    一.在SQLServer中连接另一个SQLServer库数据 在SQL中,要想在本地库中查询另一个数据库中的数据表时,可以创建一个链接服务器: EXEC master.dbo.sp_addlinked ...

  8. hibernate mapping文件中 xmlns会导致linq to xml 查询不到对应的节点

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. XXXMapper.xml中嵌套查询

    XXXMapper.xml中嵌套查询 <resultMap id="LiveUserNocticeMap" type="com.fxkj.common.vo.Liv ...

随机推荐

  1. PHP的网站主要攻击方式有哪些

    1.命令注入(Command Injection) 2.eval注入(Eval Injection) 3.客户端脚本攻击(Script Insertion) 4.跨网站脚本攻击(Cross Site ...

  2. matlab中卷积编码参数的理解

    poly2trellis(7, [171 133])代表什么意思呢?首先是7,他是1*k的vector,此处k为1,[171 133]是k*n的vector,此处n就是2,那么这个编码就是1/2码率的 ...

  3. LG1429 平面最近点对(加强版)

    题意 给定平面上n个点,找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的 2≤n≤200000 分析 参照3A17K的题解. 我们充分发扬人类智慧: 将所有点全部绕原点旋转 ...

  4. Maven中plugins和pluginManagement的区别

    pluginManagement是表示插件声明,即你在项目中的pluginManagement下声明了插件,Maven不会加载该插件,pluginManagement声明可以被继承. pluginMa ...

  5. 什么是虚拟环境、为什么使用虚拟环境、Anaconda创建、激活、退出、删除虚拟环境

    一.虚拟环境 virtual environment 它是一个虚拟化,从电脑独立开辟出来的环境.通俗的来讲,虚拟环境就是借助虚拟机docker来把一部分内容独立出来,我们把这部分独立出来的东西称作“容 ...

  6. 进程间通信IPC之--无名管道(pipe)和有名管道(fifo)(转)

     进程间通信IPC之--无名管道(pipe)和有名管道(fifo) 2012-01-17 22:41:20 分类: C/C++ 每个进程各自有不同的用户地址空间,任何一个进 程的全局变量在另一个进程中 ...

  7. bzoj 1001 [BeiJing2006]狼抓兔子——最小割转最短路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 #include<cstdio> #include<cstring& ...

  8. Cmake编译opencv下载不了ffmpeg时的解决办法

  9. C++ 命名空间解释

    using关键字 如果在程序中需要多次引用某个命名空间的成员,那么按照之前的说法,我们每次都要使用范围解析符来指定该命名空间,这是一件很麻烦的事情.为了解决这个问题,人们引入了using关键字.usi ...

  10. java web 程序---猜数字游戏

    思路:1.第一个是随机产生的数字,告诉我们去猜  cai.jsp 2.第二个是一个form表单,提交按钮后,将连接到验证页面 test1.jsp 3.第三个是比较猜的数和随机数.对了,提示再玩一次,不 ...