首页 > 代码库 > 在SQL2008中使用XML应对不确定结构的参数
在SQL2008中使用XML应对不确定结构的参数
目的:统一接口,当数据结构发生变化时,前后端业务接口不发生变化,由业务具体解析结构。
规则:确定的接口用参数表(多行提交),不确定的参数用XML
?
- DECLARE @r TABLE
- ????(
- ??????HardwareNo INT ,
- ??????emvno INT ,
- ??????DATA XML
- ????)
- INSERT INTO @r
- 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
- SELECT T.c.value(‘k[1]‘, ‘varchar(20)‘) k ,
- ????????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
- ????????CROSS APPLY data.nodes(‘/d‘) AS T ( c )
?
输出结果:
?
- (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应对不确定结构的参数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。