Sql语句查询XML - 小结
--两种方式查询
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 - 小结的更多相关文章
- 如何用SQL语句查询Excel数据?
如何用SQL语句查询Excel数据?Q:如何用SQL语句查询Excel数据? A:下列语句可在SQL SERVER中查询Excel工作表中的数据. 2007和2010版本: SELECT*FROMOp ...
- sql语句查询
1. sql语句查询某位数字或者某几位数字开头的数据,字段类型为数字类: %’: 2. sql搜索以4开头和含有李字的数据: select * from wlzbpre_user where real ...
- phpcmsv9自定义sql语句查询模型实现
在phpcmsv9中,自定义sql语句查询可不太好实现,传入sql语句查询很容易被内部转入生成一系列莫名其妙的sql语句,比如最佳前缀等等,直接造成sql语句查询错误,在此也提供两种解决办法,1修改底 ...
- 怎样用SQL语句查询一个数据库中的所有表?
怎样用SQL语句查询一个数据库中的所有表? --读取库中的所有表名 select name from sysobjects where xtype='u'--读取指定表的所有列名select nam ...
- SQL语句查询某表的所有字段及数据类型
SQL语句查询某表的所有字段及数据类型 SELECT name AS column_name , TYPE_NAME(system_type_id) AS column_type , max_leng ...
- sql语句查询数据库表结构信息
开发中经常用到查询指定表及其字段的信息,以下是我整理的SQL语句查询方法,供自己平时使用也提供给大家参考! 1.适用MS SQL SERVER: SELECT 表名 = then d.name els ...
- 怎么用sql语句查询一个数据库有多少张表
今天在技术群中闲谈时忽然聊到一个问题,那就是当一个数据库中有多张表时怎么快速的获取到表的个数,从而给问询者一个准确的回答. 大家或许会说,这个问题和我们的数据库操作没有太大关系或者不是很挂钩,所以没意 ...
- 使用sql语句查询日期在一定时间内的数据
使用sql语句查询日期在一周内的数据 select * from ShopOrder where datediff(week,ordTime,getdate()-1)=0 //查询当天日期在一周年 ...
- SQL语句查询数据库的触发器、存储过程、视图以及表的SQL语句
Sql Server数据库用SQL语句查询方法如下: select name from sysobjects where xtype='TR' --所有触发器 select name from sys ...
随机推荐
- Apache用户目录枚举工具apache-users
Apache用户目录枚举工具apache-users Apache服务器提供UserDir模块,允许在网站为不同的用户设置对应的目录.这样,用户可以使用http://example.com/~use ...
- 「Baltic2015」Network
题目描述 原文 The government of Byteland has decided that it is time to connect their little country to th ...
- Codeforces 311E Biologist
Discription SmallR is a biologist. Her latest research finding is how to change the sex of dogs. In ...
- 【动态规划】【记忆化搜索】CODEVS 3409 搬运礼物 CodeVS原创
考虑暴力递归求解的情况: f(i)=min(a(i),f(i-1),f(i-2),...,f(1)) 由于只要参数相同,f()函数的返回值是一样的,因此导致了大量的重复计算,所以我们可以记忆下来. # ...
- 关于SQL优化方面的一些总结
在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ord ...
- [转]iOS ARC机制 weak strong
写在开头 虽然距离WWDC2011和iOS 5已经快一年时间,但是很多开发者并没有利用新方法来提高自己的水平,这点在ARC的使用上非常明显(特别是国内,基本很少见到同行转向ARC).我曾经询问过一些同 ...
- 下载谷歌浏览器(Chrome)扩展离线安装包crx文件最简单的方法
转:http://alyzq.com/?p=627 如果不会使用,请看下面的操作步骤 引言(可以不看): 下面介绍一下,下载谷歌浏览器(Google Chrome)扩展的离线安装包crx文件最简单的方 ...
- [Git] Git把Tag推送到远程仓库
转载: http://blog.csdn.net/hustpzb/article/details/8056518 用git tag来给工程打上标签,但是这个命令只是在本地仓库打标签而已, 为了能把标签 ...
- D3.js系列——布局:饼状图和力导向图
一.饼状图 在布局的应用中,最简单的就是饼状图. 1.数据 有如下数据,需要可视化: , , , , ]; 这样的值是不能直接绘图的.例如绘制饼状图的一个部分,需要知道一段弧的起始角度和终止角度,这些 ...
- http://blog.csdn.net/jhg1204/article/details/45013987
http://blog.csdn.net/jhg1204/article/details/45013987