在SQL2008中使用XML应对不确定结构的参数
目的:统一接口,当数据结构发生变化时,前后端业务接口不发生变化,由业务具体解析结构。
规则:确定的接口用参数表(多行提交),不确定的参数用XML
- (
- HardwareNo INT ,
- emvno INT ,
- DATA XML
- )
- VALUES ( 1, 1,
- '<d><k>meter</k><v>1</v></d><d><k>run</k><v>100</v></d><d><k>work</k><v>80</v></d><d><k>dead</k><v>20</v></d>' ),
- ( 2, 1,
- '<d><k>meter</k><v>21</v></d><d><k>run</k><v>100</v></d><d><k>work</k><v>80</v></d><d><k>dead</k><v>20</v></d>' ),
- ( 3, 1,
- '<d><k>meter</k><v>31</v></d><d><k>run</k><v>100</v></d><d><k>work</k><v>80</v></d><d><k>dead</k><v>20</v></d><d><k>good</k><v>210</v></d>' )
- SELECT *
- FROM @r
- DECLARE @xml XML
- SELECT @xml = data
- FROM @r
- T.c.value('v[1]', 'varchar(20)') v
- FROM @xml.nodes('/d') T ( c )
- SELECT HardwareNo ,
- T.c.value('k[1]', 'varchar(20)') k ,
- T.c.value('v[1]', 'varchar(20)') v
- FROM @r
输出结果:
- (3 行受影响)
- HardwareNo emvno DATA
- 1 1 <d><k>meter</k><v>1</v></d><d><k>run</k><v>100</v></d><d><k>work</k><v>80</v></d><d><k>dead</k><v>20</v></d>
- 2 1 <d><k>meter</k><v>21</v></d><d><k>run</k><v>100</v></d><d><k>work</k><v>80</v></d><d><k>dead</k><v>20</v></d>
- 3 1 <d><k>meter</k><v>31</v></d><d><k>run</k><v>100</v></d><d><k>work</k><v>80</v></d><d><k>dead</k><v>20</v></d><d><k>good</k><v>210</v></d>
- (3 行受影响)
- k v
- -------------------- --------------------
- meter 31
- run 100
- work 80
- dead 20
- good 210
- (5 行受影响)
- HardwareNo k v
- ----------- -------------------- --------------------
- 1 meter 1
- 1 run 100
- 1 work 80
- 1 dead 20
- 2 meter 21
- 2 run 100
- 2 work 80
- 2 dead 20
- 3 meter 31
- 3 run 100
- 3 work 80
- 3 dead 20
- 3 good 210
- (13 行受影响)
在SQL2008中使用XML应对不确定结构的参数的更多相关文章
- 用 ElementTree 在 Python 中解析 XML
用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...
- PHP中遍历XML之SimpleXML
简单来讲述一些XML吧,XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言.XML是当今用于传输数据的两大工具之一,另外一个是json. 我们在PHP中使用XML也是用来传输数据, ...
- sql server中对xml进行操作
一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XM ...
- .net中创建xml文件的两种方法
.net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...
- 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】
一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...
- 关于JavaEE 开发中web.xml的主要配置及其使用
web.xml 中的listener. filter.servlet 加载顺序及其详解 在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人 ...
- SQL2008中Merge的用法
在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge ...
- 【译】用jQuery 处理XML--浏览器中的XML与JavaScript
用jQuery 处理XML--写在前面的话 用jQuery 处理XML-- DOM(文本对象模型)简介 用jQuery 处理XML--浏览器中的XML与JavaScript 用jQuery 处理XML ...
- 知方可补不足~SQL2008中的发布与订阅模式~续
回到目录 上一回介绍了如何在sql2008中建立一个数据库的发布者,今天来说一下如何建立一个订阅者,其实订阅者也是一个数据库,而这个数据库是和发布者的数据结构相同的库,它们之间通过SQL代理进行数据上 ...
随机推荐
- 钉钉开发中post异步调用问题
最近项目上在做钉钉开发中,经常会遇到使用post方式调用钉钉内部的方法(微信也有一样),这里涉及到跨域的post调用,但跨域一般都是用jsonp格式,而这个格式只支持get方式.尝试了挺多方法都没有返 ...
- [Asp.net 5] DependencyInjection项目代码分析
最近在研究开源代码,正好发现Asp.net5的源码,下载地址:https://github.com/aspnet. 今天主要讲的是DependencyInjection这部分,抛砖引玉,供大家参考,也 ...
- Winform开发框架之读卡器和条码扫描枪的数据接收处理
在我们开发一些项目的时候,一般需要一些外围的设备进行数据处理,如ID/IC读卡器获取卡号.激光条码扫描枪.USB摄像头.USB方式的小票据打印机(POS打印机).USB来电录音盒.普通打印机等一系列附 ...
- asp.net(c#)将彩色图片变灰阶图片
代码如下: using System; using System.Collections; using System.Configuration; using System.Data; using S ...
- 15天玩转redis —— 第二篇 基础的字符串类型
我们都知道redis是采用C语言开发,那么在C语言中表示string都是采用char[]数组的,然后你可能会想,那还不简单,当我执行如下命令,肯定是直 接塞给char[]数组的. 如果你真的这么想的话 ...
- 【C#】第2章学习要点
分类:C#.VS2015 创建日期:2016-06-15 教材:(十二五国家级规划教材)<C#程序设计及应用教程>(第3版) 一.本章要点 C#数据类型分两大类:值类型.引用类型. 值类型 ...
- 自己动手,让Entity Framework Power Tools在VS2015重放光彩
Entity Framework Power Tools是一个由EntityFramework开发小组提供的工具,它可以从现有数据库生成Fluent款式的Code First代码. VS Galler ...
- C# 通过GPS坐标,计算两点之间距离
之前在网上有很多这种计算的,但是代码都不怎么全.经过多方打听查询.找到完整代码.现将代码共享给大家. 有需要者觉得有用者欢迎使用.觉得用或简单的高手,请绕. public static double ...
- jquery表单对象属性选择器
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【Java每日一题】20161111
package Nov2016; import java.io.Serializable; public class Ques1111 implements Serializable{ private ...