手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >sqlserver2005 xml字段的读写操作
sqlserver2005 xml字段的读写操作
摘要:1.创建xml字段在表xmlTest内创建一个字段,命名_x,设置数据类型为xml。2.写入xmlinsertintoxmlTest(_x)...

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

结果如图:

sqlserver2005 xml字段的读写操作1

3.2 查询root下面的第一个item节点

select _x.query('root/item[1]')

from xmlTest

结果:

sqlserver2005 xml字段的读写操作2

3.3 查询root下面的第一个item节点的值

select _x.value('(root/item)[1]','varchar(50)')

from xmlTest

结果:

sqlserver2005 xml字段的读写操作3

3.3 查询root下面的第二个item节点的attr2属性值

select _x.value('(root/item/@attr2)[2]','varchar(50)')

from xmlTest

结果:

sqlserver2005 xml字段的读写操作4

3.4 查询表中每条记录的xml字段的item节点值,全部列出来

SELECT t2.c1.value('.','varchar(20)') as items

from xmlTest

cross apply _x.nodes('root/item') as t2(c1)

结果:

sqlserver2005 xml字段的读写操作5

3.5 查询表中id=1记录的xml的所有item字段的attr2属性值

SELECT t2.c1.value('@attr2','varchar(20)') as attr2

from xmlTest

cross apply _x.nodes('root/item') as t2(c1)

where id='1'

结果:

sqlserver2005 xml字段的读写操作6

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

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

from xmlTest where id='1'

结果:

sqlserver2005 xml字段的读写操作7

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

结果:

sqlserver2005 xml字段的读写操作8

4.2 修改表中id=2记录的第二个item节点的attr2属性值

UPDATE xmlTest

set _x.modify('replace value of (root/item/@attr2)[2] with "2222b"')

where id='2'

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

from xmlTest

结果:

sqlserver2005 xml字段的读写操作9

【sqlserver2005 xml字段的读写操作】相关文章:

跪求sql server2012行转列方案

SQLServer 2008 新增T-SQL 简写语法

sql server2008 排序函数

查找sqlserver数据库中某一字段在 哪

sqlserver查询某个字段在哪些表中存在

给sqlserver中的表创建索引

sql server 2000 版本查询

Sql Server中REPLACE函数的使用

mssql中得到当天数据的语句

sqlserver2008根据日志还原数据库

精品推荐
分类导航