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 ...
随机推荐
- Robot Framework与Web界面自动化测试:简单例子
假设环境已经搭建好了.这里用RIDE( Robot Framework Test Data Editor)工具来编写用例.下面我们对Robot Framework简称rf. 我们先考虑下一个最基本的登 ...
- Codeforces 785E Anton and Permutation(分块)
[题目链接] http://codeforces.com/contest/785/problem/E [题目大意] 一个1到n顺序排列的数列,每次选择两个位置的数进行交换,求交换后的数列的逆序对数 [ ...
- 【数形结合】Gym - 100923I - Por Costel and the Pairs
perechi3.in / perechi3.out We don't know how Por Costel the pig arrived at FMI's dance party. All we ...
- C#将json字符串解析成对象
首先我们在客户端生成json字符串,通过ajax把该字符串传到服务器端 //这是一个以id,email,age的json字符串 var jdata="[{\"id\&quo ...
- centos6.9安装xampp后报错:egrep: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
1.centos6.9安装xampp(xampp-linux-x64-7.0.21-0-installer.run)后启动的时候,报错: egrep: error while loading shar ...
- [转载]使用32位64位交叉编码混淆来打败静态和动态分析工具 - wildsator
0×00 摘要 混淆是一种能增加二进制分析和逆向工程难度与成本的常用技术.主流的混淆技术都是着眼于使用与目标CPU相同的机器代码,在相同的处理器模式下,隐藏代码并进行控制.本文中引入了一种新的混淆方法 ...
- crontab定时任务详解
1.安装crontab:yum install crontabs 说明:/sbin/service crond start //启动服务/sbin/service crond stop //关闭服务/ ...
- profiler
推荐C++ 的profiler 用于GPU CPU 综合测试 FramePro http://www.puredevsoftware.com/ 可以在进度条上拉时间 查看GPU CPU bound
- Java平时需要注意的事项
1.String 相等 稍微有点经验的程序员都会用equals比较而不是用 ==,但用equals就真的安全了吗,看下面的代码 user.getName().equals("xiaoming ...
- 【重点突破】—— Vue2.0 transition 动画Demo实践填坑
前言:vue1.0版本和2.0版本的过渡系统改变是很大的,具体请详看文档介绍.本文转载自郭锦荣的博客,一共列举了四种transition的使用实践,分别是css过渡.css动画.javascript钩 ...