注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

SQL XML 类型插入操作  

2011-12-08 10:59:02|  分类: MS SQL |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
载自:http://space.itpub.net/16436858/viewspace-623444
--创建测试数据库
CREATE DATABASE mytest;
GO

USE mytest;
GO

--创建测试表
CREATE TABLE Users
(
ID
INT IDENTITY(1,1),
UserInfo XML

)

/*****************插入单节点*****************************/

---插入测试数据
DECLARE @xml XML
SET @xml='<root xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/users">
<user>
<userid>1</userid>
<userName>test1</userName>
</user>
</root>
'
INSERT INTO Users(UserInfo)VALUES(@xml)


--select * from Users
--添加address节点,默认添加在所有节点之后
UPDATE Users SET UserInfo.modify('insert <address>shanghai</address>
into (/root/user)[1]
')

SELECT * FROM Users

--添加address节点,节点顺序为第一个
UPDATE Users SET UserInfo.modify('insert <address>shanghai</address> as first
into (/root/user)[1]
')

SELECT * FROM Users

--添加address节点,节点顺序为最后一个
UPDATE Users SET UserInfo.modify('insert <address>shanghai</address> as last
into (/root/user)[1]
')

SELECT * FROM Users

--添加address节点到某个节点之后
UPDATE Users SET UserInfo.modify('insert <address>shanghai</address>
after (/root/user/userid)[1]
')

--添加address节点到某个节点之前
UPDATE Users SET UserInfo.modify('insert <address>shanghai</address>
before (/root/user/userid)[1]
')

SELECT * FROM Users

---注:[1] 代表第一个item


/*****************插入多节点*****************************/


--添加firstName and LastName,以,分割

UPDATE Users SET UserInfo.modify('insert (<firstName>steven</firstName>,
<lastName>shi</lastName>) into (/root/user)[1]
')

SELECT * FROM Users


/*****************插入节点属性*****************************/

---在USER 节点插入ID 属性,并且值=1
UPDATE Users SET UserInfo.modify('insert attribute ID {"1"}
into (/root/user)[1]
')
SELECT * FROM Users


---在USER 节点插入ID 属性,值为一个变量,这个应该更常用
declare @uid float
set @uid=0.5
UPDATE Users SET UserInfo.modify('insert attribute UID {sql:variable("@Uid")}
into (/root/user)[1]
')
SELECT * FROM Users


---如果插入多个属性,需要用,分割
declare @aid float,@bid float
set @aid=0.5
set @bid=0.6
UPDATE Users SET UserInfo.modify('insert (attribute aid {sql:variable("@aid")},
attribute bid {sql:variable("@bid")}
)
into (/root/user)[1]
')
SELECT * FROM Users



/*****************插入节点注释*****************************/

---insert 注释

UPDATE Users SET UserInfo.modify('insert <!-- 注释 -->
before (/root/user/userid[1])[1]
')
SELECT * FROM Users


/*****************插入处理指令*****************************/

UPDATE Users SET UserInfo.modify('insert <?Program = "A.exe" ?>
before (/root)[1]
')
SELECT * FROM Users


/*****************插入CDATA*****************************/


UPDATE Users SET UserInfo.modify('insert <C><![CDATA[<city>北京</city> or cdata]]> </C>
after (/root/user)[1]
')
SELECT * FROM Users



/*****************插入文本*****************************/


UPDATE Users SET UserInfo.modify('insert text{"插入文本"} as first
into (/root/user)[1]
')
SELECT * FROM Users




/*****************根据 if 条件语句进行插入*****************************/

---判断属性值
UPDATE Users SET UserInfo.modify('insert if(/root/user[@ID=1]) then (<tel>888888</tel>)
else (<qq>66666</qq>)
into (/root/user)[1]
')
SELECT * FROM Users

----判断节点Value
UPDATE Users SET UserInfo.modify('insert if(/root/user[firstName="steven1"]) then (<tel>1111</tel>)
else (<qq>2222</qq>)
into (/root/user)[1]
')
SELECT * FROM Users



----判断user 节点数是否小于等于10
UPDATE Users SET UserInfo.modify('insert if (count(/root/user)<=10) then element user { "This is a new user" }
else () as last
into (/root)[1]
')
SELECT * FROM Users




/*****************将节点插入类型化的 xml 列中*****************************/

UPDATE Users SET UserInfo.modify('
declare namespace UI="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/users";
insert <UI:user>
<UI:firstName>steven2</UI:firstName>
</UI:user> as first
into (/UI:root)[1]
')
SELECT * FROM Users



UPDATE Users SET UserInfo.modify('
declare namespace UI="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/users";
insert attribute ID { "55" }

into (/UI:root/UI:user)[1]
')
SELECT * FROM Users



------------------------------------------更新---------------------------------------------------

一,创建有XML类型字段的表

Create table xml_test (xmlinfo xml)

二,导入数据

Insert into xml_test values(‘<?xml version="1.0" ?>

<Avatar Name="xiawa" Sex="female">

<BasicPart>

<Part ID="00001" />

<Part ID="00002" />

<Part ID="00003" />

<Part ID="00004" />

<Part ID="00005" />

<Part ID="00006" />

</BasicPart>

<BasicSkin ID="00001" />

<PartList>

<Part ID="00001" File="xiawa_partbasic_head.mesh" Part="head" />

<Part ID="00002" File="xiawa_part_hair_0001.mesh" Part="hair" />

<Part ID="00003" File="xiawa_part_coat_0001.mesh" Part="coat" />

<Part ID="00004" File="xiawa_part_pants_0001.mesh" Part="pants" />

<Part ID="00005" File="xiawa_partbasic_hands.mesh" Part="hands" />

<Part ID="00006" File="xiawa_part_shoes_0001.mesh" Part="shoes" />

<Part ID="00007" File="xiawa_part_hair_0003.mesh" Part="hair" />

<Part ID="00008" File="xiawa_part_coat_0003.mesh" Part="coat" />

<Part ID="00009" File="xiawa_part_pants_0003.mesh" Part="pants" />

<Part ID="00010" File="xiawa_part_shoes_0003.mesh" Part="shoes" />

</PartList>

</BasicPart>

</Avatar>

’)

三,更新XML节点

Update xml_test set xmlinfo.modify(‘replace values of /Avatar/partList/Part[@ID=”00001”]/@File)[1] with "This is test”’)

  评论这张
 
阅读(522)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017