--两种方式查询
DECLARE @varXML XML,
@varXML1 XML,
@varXML2  XML --、xml数据源为属性方式
SET @varXML = '<PARAM>
<Row FID = "" FName = "张三" />
<Row FID = "" FName = "李四" />
<Row FID = "" FName = "王五" />
</PARAM>' Select T.C.value('@FID','INT') AS FID,
T.C.value('@FName','VARCHAR(20)') AS FName
From @varXML.nodes('/PARAM/Row') T(C)
--、xml数据源为标签方式
SET @varXML1 = '<PARAM>
<Row><FID></FID><FName>张三</FName></Row>
<Row><FID></FID><FName>李四</FName></Row>
<Row><FID></FID><FName>王五</FName></Row>
</PARAM>' Select T.C.value('(FID)[1]','INT') AS FID,
T.C.value('(FName)[1]','VARCHAR(20)') AS FName
From @varXML1.nodes('/PARAM/Row') T(C)

--3、xml数据源为属性方式(多级嵌套)
SET @varXML2 = '<root>
                  <hosptail hospCode = "1" hospName = "测试医院" >
                    <dept deptCode = "2" deptName = "内科" >
                      <doctor docCode = "3" docName = "王五" ></doctor>
                    </dept>
                  </hosptail>
                </root>'

Select T.C.value('(/root/hosptail/@hospCode)[1]','INT') AS FID,
       T.C.value('(/root/hosptail/@hospName)[1]','VARCHAR(20)') AS FName,
       T.C.value('(/root/hosptail/dept/@deptCode)[1]','INT') AS FID,
       T.C.value('(/root/hosptail/dept/@deptName)[1]','VARCHAR(20)') AS FName,
       T.C.value('(/root/hosptail/dept/doctor/@docCode)[1]','INT') AS FID,
       T.C.value('(/root/hosptail/dept/doctor/@docName)[1]','VARCHAR(20)') AS FName
From   @varXML2.nodes('/root') T(C)

应用场景:对外提供的WebService,别人访问接口后,传入XML参数,直接将XML当做存储过程的参数,在存储过程中查询、游标等解析处理。

当入参同一个参数 有多个时,

--入参中 同一个参数有多个的情况,如下<detailId>LYTSA0000942|</detailId> <detailId>LYTSA0000942|</detailId>

declare @xmlStr XML 

set @xmlStr = '<root><medicalCardNumber>001000030044374</medicalCardNumber><outTradeNo>ZJZF_DZSYCSFYBJY_10391149</outTradeNo><amount>0.00</amount>
<payTime>-- ::</payTime><payType>WeChatPay</payType><balancePayment>0.07</balancePayment><hospitalId>0534_0115</hospitalId>
<detailId>LYTSA0000942|</detailId><detailId>LYTSA0000942|</detailId>
</root>' --通过指定(detailId)[] 或 (detailId)[] 来确定取哪个 参数
Select T.C.value('(medicalCardNumber)[1]','varchar(1024)') AS FID,
T.C.value('(outTradeNo)[1]','VARCHAR(1024)') AS FName,
T.C.value('(detailId)[1]','varchar(1024)') AS detailId1,
T.C.value('(detailId)[2]','varchar(1024)') AS detailId2
From @xmlStr.nodes('/root') T(C)

Sql语句查询XML - 小结的更多相关文章

  1. 如何用SQL语句查询Excel数据?

    如何用SQL语句查询Excel数据?Q:如何用SQL语句查询Excel数据? A:下列语句可在SQL SERVER中查询Excel工作表中的数据. 2007和2010版本: SELECT*FROMOp ...

  2. sql语句查询

    1. sql语句查询某位数字或者某几位数字开头的数据,字段类型为数字类: %’: 2. sql搜索以4开头和含有李字的数据: select * from wlzbpre_user where real ...

  3. phpcmsv9自定义sql语句查询模型实现

    在phpcmsv9中,自定义sql语句查询可不太好实现,传入sql语句查询很容易被内部转入生成一系列莫名其妙的sql语句,比如最佳前缀等等,直接造成sql语句查询错误,在此也提供两种解决办法,1修改底 ...

  4. 怎样用SQL语句查询一个数据库中的所有表?

    怎样用SQL语句查询一个数据库中的所有表?  --读取库中的所有表名 select name from sysobjects where xtype='u'--读取指定表的所有列名select nam ...

  5. SQL语句查询某表的所有字段及数据类型

    SQL语句查询某表的所有字段及数据类型 SELECT name AS column_name , TYPE_NAME(system_type_id) AS column_type , max_leng ...

  6. sql语句查询数据库表结构信息

    开发中经常用到查询指定表及其字段的信息,以下是我整理的SQL语句查询方法,供自己平时使用也提供给大家参考! 1.适用MS SQL SERVER: SELECT 表名 = then d.name els ...

  7. 怎么用sql语句查询一个数据库有多少张表

    今天在技术群中闲谈时忽然聊到一个问题,那就是当一个数据库中有多张表时怎么快速的获取到表的个数,从而给问询者一个准确的回答. 大家或许会说,这个问题和我们的数据库操作没有太大关系或者不是很挂钩,所以没意 ...

  8. 使用sql语句查询日期在一定时间内的数据

    使用sql语句查询日期在一周内的数据 select * from ShopOrder where datediff(week,ordTime,getdate()-1)=0   //查询当天日期在一周年 ...

  9. SQL语句查询数据库的触发器、存储过程、视图以及表的SQL语句

    Sql Server数据库用SQL语句查询方法如下: select name from sysobjects where xtype='TR' --所有触发器 select name from sys ...

随机推荐

  1. Apache用户目录枚举工具apache-users

     Apache用户目录枚举工具apache-users Apache服务器提供UserDir模块,允许在网站为不同的用户设置对应的目录.这样,用户可以使用http://example.com/~use ...

  2. 「Baltic2015」Network

    题目描述 原文 The government of Byteland has decided that it is time to connect their little country to th ...

  3. Codeforces 311E Biologist

    Discription SmallR is a biologist. Her latest research finding is how to change the sex of dogs. In ...

  4. 【动态规划】【记忆化搜索】CODEVS 3409 搬运礼物 CodeVS原创

    考虑暴力递归求解的情况: f(i)=min(a(i),f(i-1),f(i-2),...,f(1)) 由于只要参数相同,f()函数的返回值是一样的,因此导致了大量的重复计算,所以我们可以记忆下来. # ...

  5. 关于SQL优化方面的一些总结

    在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ord ...

  6. [转]iOS ARC机制 weak strong

    写在开头 虽然距离WWDC2011和iOS 5已经快一年时间,但是很多开发者并没有利用新方法来提高自己的水平,这点在ARC的使用上非常明显(特别是国内,基本很少见到同行转向ARC).我曾经询问过一些同 ...

  7. 下载谷歌浏览器(Chrome)扩展离线安装包crx文件最简单的方法

    转:http://alyzq.com/?p=627 如果不会使用,请看下面的操作步骤 引言(可以不看): 下面介绍一下,下载谷歌浏览器(Google Chrome)扩展的离线安装包crx文件最简单的方 ...

  8. [Git] Git把Tag推送到远程仓库

    转载: http://blog.csdn.net/hustpzb/article/details/8056518 用git tag来给工程打上标签,但是这个命令只是在本地仓库打标签而已, 为了能把标签 ...

  9. D3.js系列——布局:饼状图和力导向图

    一.饼状图 在布局的应用中,最简单的就是饼状图. 1.数据 有如下数据,需要可视化: , , , , ]; 这样的值是不能直接绘图的.例如绘制饼状图的一个部分,需要知道一段弧的起始角度和终止角度,这些 ...

  10. http://blog.csdn.net/jhg1204/article/details/45013987

    http://blog.csdn.net/jhg1204/article/details/45013987