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参数,对于我来还是很感谢这个项目的,比较没接触过的可以学习更多

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

posted @ 2020-07-04 23:15  王云盼  阅读(3260)  评论(0编辑  收藏  举报