在SQL2008中使用XML应对不确定结构的参数
2024-10-13 00:57:40
目的:统一接口,当数据结构发生变化时,前后端业务接口不发生变化,由业务具体解析结构。
规则:确定的接口用参数表(多行提交),不确定的参数用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 行受影响)
最新文章
- iOS之处理不等高TableViewCell的几种方法
- Spring Security(08)——intercept-url配置
- Makefile拆分编写
- 【WP开发】手电筒
- hdu 4034 2011成都赛区网络赛 逆向floyd **
- ubuntu12.10升级至14.04
- 【M33】将非尾端类设计为抽象类
- [Javascript] Functor law
- Java:基础
- 翻转整数 Reverse digits of a number
- Mybatis分页插件更新
- SqlServer-COMPUTE BY
- 第七十七节,CSS3前缀和rem长度单位
- 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)
- EF执行SQL返回动态类型
- Python标准库--time模块的详解
- 项目实战1—LNMP的搭建、nginx的ssl加密、身份验证的实现
- Mybatis PageHelper 简单使用
- Android 更改按钮样式 Button Styles
- BZOJ 4591 【SHOI2015】 超能粒子炮&#183;改
热门文章
- LINQ使用Lambda表达式选择几列
- C#基础-replace()过滤非法字符
- [DBW]大图轮播,可通过两种方法实现
- iOS阶段学习第14天笔记(NSString与NSMutableString)
- 第 29 章 CSS3 弹性伸缩布局[中]
- [moka同学笔记]Yii2中多表关联查询(join、joinwith) (摘录)
- Android QQ群:343816731 欢迎大家加入探讨
- 2014年物联网Internet of Things应用简介
- 使用MD5WithRSA来签名和验签(.NET)
- node.js处理post请求