sqlserver2005 xml字段的读写操作 |
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节点 ![]() 3.3 查询root下面的第一个item节点的值 ![]() 3.3 查询root下面的第二个item节点的attr2属性值 ![]() 3.4 查询表中每条记录的xml字段的item节点值,全部列出来 ![]() 3.5 查询表中id=1记录的xml的所有item字段的attr2属性值 结果: 3.6 查询id为1的所有节点中attr1属性为a1的第一个匹配节点的attr2属性值 select _x.value((root/item[@attr1="a1"]/@attr2)[1],varchar(50)) 结果: 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 4.修改数据 select _x.query(root/item[1]) as item1 ![]() 4.2 修改表中id=2记录的第二个item节点的attr2属性值 select _x.query(root/item[2]) as item1 ![]() |