sqlserver 中 xml字段的读写 *** 作

sqlserver 中 xml字段的读写 *** 作,第1张

概述2012-04-09 10:13 sqlserver 中 xml字段读写 *** 作 sqlserver2005 xml字段的读写 *** 作  【注,本人加】 【有此字段 xy <x a="a" b="b"> 此时 要查询a属性的值 ,sql为:SELECT xy.value('(/x/@a)[1]','VARCHAR(8)')】 1.创建xml字段 在表xmlTest内创建一个字段,命名_x,设置数据类型为 2012-04-09 10:13 sqlserver 中 xml字段的读写 *** 作 sqlserver2005 xml字段的读写 *** 作

 【注,本人加】

【有此字段 xy <x a="a" b="b"> 此时 要查询a属性的值 ,sql为:SELECT xy.value('(/x/@a)[1]','VARCHAR(8)')】

1.创建XML字段
在表xmlTest内创建一个字段,命名_x,设置数据类型为xml。

2.写入xml
insert into xmlTest (_x) values('
<root>
<item attr1="a1" attr2="a2">item11</item>
<item attr1="a1" attr2="a2">item12</item>
</root>
')
go
如此再插入一条记录:
insert into xmlTest (_x) values('
<root>
<item attr1="b1" attr2="b2">item21</item>
<item attr1="b1" attr2="b2">item22</item>
</root>
')

3.查询数据

3.1 查询字段所有数据
select _x from xmlText

3.2 查询root下面的第一个item节点
select _x.query('root/item[1]')
from xmlTest


3.3 查询root下面的第一个item节点的值
select _x.value('(root/item)[1]','varchar(50)')
from xmlTest


3.3 查询root下面的第二个item节点的attr2属性值
select _x.value('()
from xmlTest


3.4 查询表中每条记录的xml字段的item节点值,全部列出来
SELECT t2.c1.value('.','varchar(20)') as items
from xmlTest
cross apply _x.nodes('root/item') as t2(c1)


3.5 查询表中ID=1记录的xml的所有item字段的attr2属性值
SELECT t2.c1.value() as attr2
from xmlTest
cross apply _x.nodes('root/item') as t2(c1)
where ID='1'

 

3.6 查询ID为1的所有节点中attr1属性为a1的第一个匹配节点的attr2属性值

select _x.value('(root/item[@attr1="a1"]/@attr2)[1]','varchar(50)')
from xmlTest where ID='1'

 

3.7 多表查询

例如:存在另外1个table:t2,其字段xmlID关联表xmlTest,而attr1关联xmlTest的_x字段中的attr1属性值。

查询表xmlTest中ID=‘1'记录中_x字段内item节点中attr1为表t2中attr1字段值时,item节点中attr2的属性值

select xmlTest._x.value('(root/item[@attr1=sql:column("t2.attr1")]/@attr2)[1]','varchar(50)') as attr2,t2.attr1
from xmlTest join t2 on t2.xmlID=xmlTest.ID
where xmlTest.ID='1'


4.修改数据
4.1 修改表中ID=1记录的第一个item节点值
UPDATE xmlTest
set _x.modify('replace value of (root/item/text())[1] with "xxxxx"')
where ID='1'

select _x.query('root/item[1]') as item1
from xmlTest

4.2 修改表中ID=2记录的第二个item节点的attr2属性值
UPDATE xmlTest
set _x.modify('replace value of (] with "2222b"')
where ID='2'

select _x.query('root/item[2]') as item1
from xmlTest

原文地址 : http://www.cnblogs.com/Real_Dream/articles/1586005.html

总结

以上是内存溢出为你收集整理的sqlserver 中 xml字段的读写 *** 作全部内容,希望文章能够帮你解决sqlserver 中 xml字段的读写 *** 作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1169718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存