SqlServer解析XML数据

 1 --建表
 2 create table xml_table(id int identity primary key, xmldata xml)
 3 --插入数据
 4 insert into xml_table(xmldata) values 
 5 (<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 6     <REQUEST>
 7     <AKB020>00010102</AKB020>
 8     <MSGFMT>ZRHIS</MSGFMT>
 9     <REQUEST_SN>159800</REQUEST_SN>
10     <BAC060>ZRHIS03</BAC060>
11     <USERID></USERID>
12     <PASSWD></PASSWD>
13     <PARAM1></PARAM1>
14     <PARAM2></PARAM2>
15     <PARAM3></PARAM3>
16     <PARAM>
17         <CURRENT_PAGE>1</CURRENT_PAGE>
18         <PAGE_COUNT>30</PAGE_COUNT>
19         <ZKE283>1</ZKE283>
20     </PARAM>
21     </REQUEST>
22 )
23 --查询表
24 select * from xml_table
25 --查询BAC060值
26 select xmldata.query(/REQUEST), xmldata.query(/REQUEST/BAC060) from xml_table --这样只能查到含节点的内容
27 select xmldata.value((/REQUEST/BAC060)[1], nvarchar(120)) from xml_table--查询到ZRHIS03值 ZRHIS03
28 --查询PARAM节点内的PAGE_COUNT值
29 select xmldata.query(/REQUEST), xmldata.query(/REQUEST/PARAM/PAGE_COUNT) from xml_table --这样只能查到含节点的内容
30 select xmldata.value((/REQUEST/PARAM/PAGE_COUNT)[1], nvarchar(120)) from xml_table--查询到ZRHIS03值30
31 --增加节点TESTSTR
32 update xml_table 
33 set xmldata.modify(insert <TESTSTR>这是增加的节点</TESTSTR> before (/REQUEST/USERID)[1] )
34 --查询增加的节点TESTSTR
35 select xmldata.value((/REQUEST/TESTSTR)[1], nvarchar(120)) from xml_table--这是增加的节点
36 --删除节点
37 update xml_table
38 set xmldata.modify(delete /REQUEST/TESTSTR)

最近接到个新项目,需要利用存储过程操作XML,不需要代码传参,直接用存储过程返回XML参数,对于我来还是很感谢这个项目的,比较没接触过的可以学习更多

趁现在晚上有点时间先预习一下,先从增删改查学起,学习过程记录一下,供自己以后查阅

SqlServer解析XML数据

上一篇:Mysql的逻辑架构


下一篇:MySQL索引原理