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"')
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"')
相关文章推荐
- SQL Server 2008 对XML 数据类型操作
- SQL Server操作XML(四)XML数据类型
- SQL Server 2008 对XML 数据类型操作
- SQL Server 2008 对XML 数据类型操作
- SQL Server 2008 对XML 数据类型操作
- Sql Server XML 操作实例
- SQL Server 2005 XML 操作总结(六)属性操作——查询操作
- sql server Date time 类型操作
- c # xml操作 (无法将类型为“System.Xml.XmlComment”的对象强制转换为类型“System.Xml.XmlElement”)
- SQL Server 中对XML数据的五种基本操作
- 2、SQL Server 2005中使用XML数据类型
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
- SQL Server中的Image数据类型的操作
- SQL Server 2005 XML 操作总结(八)属性操作——删除、遍历操作
- 关于Oracle的XMLType类型的数据库操作
- 使用JDBC4.0操作XML类型的字段(保存获取xml数据)的方法
- SQL Server中的Image数据类型的操作
- SQL Server 中对XML数据的五种基本操作
- LINQ to XSD - 操作强类型xml
- SQL Server 2005 XML 操作总结 1