您的位置:首页 > 数据库

Sql Server 对xml类型的操作

2010-04-13 17:16 309 查看
declare @XML XML
SET @XML='<root>
<OLDVALUE>
<H_Action id="1130">030</H_Action>
<D_Action>030</D_Action>
<OrderCompany>00220</OrderCompany>
<OrderNumber>10004035</OrderNumber>
<OrderType>SO</OrderType>
<LineNumber>10.100</LineNumber>
</OLDVALUE>
<NEWVALUE>
<H_Action>040</H_Action>
<D_Action>040</D_Action>
<OrderCompany>00220</OrderCompany>
<OrderNumber>10004035</OrderNumber>
<OrderType>SO</OrderType>
<LineNumber>10.100</LineNumber>
<LineType>CS</LineType>
<LoadNumber>8811</LoadNumber>
</NEWVALUE>
</root>'

select c.value('H_Action[1]','varchar(20)') as H_Action,
c.value('D_Action[1]','varchar(20)') as D_Action,
c.value('OrderCompany[1]','varchar(20)') as OrderCompany,
c.value('OrderNumber[1]','varchar(20)') as OrderNumber,
c.value('OrderType[1]','varchar(20)') as OrderType,
c.value('LineNumber[1]','varchar(20)') as LineNumber
from @XML.nodes('//OLDVALUE') as T(C)

select c.value('H_Action[1]','varchar(20)') as H_Action,
c.value('D_Action[1]','varchar(20)') as D_Action,
c.value('OrderCompany[1]','varchar(20)') as OrderCompany,
c.value('OrderNumber[1]','varchar(20)') as OrderNumber,
c.value('OrderType[1]','varchar(20)') as OrderType,
c.value('LineNumber[1]','varchar(20)') as LineNumber,
c.value('LineType[1]','varchar(20)') as LineType,
c.value('LoadNumber[1]','varchar(20)') as LoadNumber
from @XML.nodes('//NEWVALUE') as T(C)

CREATE TABLE [dbo].[T_XML](
[ID] [int] NULL,
[DOC] [xml] NULL
)

--query
select doc.query('//NEWVALUE') from t_xml
select doc.query('(root/OLDVALUE/H_Action[@id="1130"])') from t_xml
--属性
select doc.value('(','nvarchar(20)']root/OLDVALUE/H_Action/@id)[1]','nvarchar(20)') from t_xml
select doc.value('(root/OLDVALUE/H_Action[@id])[1]','nvarchar(20)') from t_xml
--文本
select doc.value('(root/OLDVALUE/H_Action/text())[1]','nvarchar(20)') from t_xml
select doc.value('(root/OLDVALUE/H_Action[text()])[1]','nvarchar(20)') from t_xml
--exist
SELECT doc.exist('/root/OLDVALUE/H_Action[(text()[1] cast as xs:string ?)= xs:string("030")]') from t_xml
--modify

update t_xml set doc.modify('replace value of (/root/OLDVALUE/H_Action[@id="1130"]/text())[1] with "100"')
--delete
update t_xml set doc.modify('delete /root/OLDVALUE/H_Action[@id="1130"]')
--insert
update t_xml set doc.modify('insert <insert>by xf</insert> before (/root/OLDVALUE/H_Action[@id="1130"])[1]')

--添加属性
update t_xml set doc.modify('insert attribute date{"2008-11-27"} into (/root/OLDVALUE/H_Action[@id="1130"])[1]')
--删除属性
update t_xml set doc.modify('delete /root/OLDVALUE/H_Action[@id="1130"]/@date')
--修改属性
update t_xml set doc.modify('replace value of (/root/OLDVALUE/H_Action[@id="1130"]/@id)[1] with "030"')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: