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参数,对于我来还是很感谢这个项目的,比较没接触过的可以学习更多
趁现在晚上有点时间先预习一下,先从增删改查学起,学习过程记录一下,供自己以后查阅