sqlserverT-Sql操作Xml数据(二)

2014-11-24 15:32:53 · 作者: · 浏览: 2
y('insert (attribute www{sql:variable("@id")} ,attribute wzg{sql:variable("@id")}) into (/root/book[@id=0001])[1]')

select @xmlDoc.query('(/root/book[@id="0001"])')

5、删除属性

declare @id varchar(max) = '0001'

select @xmlDoc.query('/root/book[@id=sql:variable("@id")]')

set @xmlDoc.modify('delete root/book[@id=sql:variable("@id")]/@id')

select @xmlDoc.query('(/root/book)[1]')

6、修改属性

declare @id varchar(max) = '0001'

select @xmlDoc.query('/root/book[@id=sql:variable("@id")]')

set @xmlDoc.modify('replace value of (root/book[@id="0001"]/@id)[1]with "0005"')

select @xmlDoc.query('(/root/book)[1]')

7. 判断指定的节点是否存在

exist()方法,用来判断指定的节点是否存在,返回值为true或false

declare @id varchar(max) = '0001'

select @xmlDoc.exist('(/root/book[@id=sql:variable("@id")])[2]')

8. 把一组由一个查询返回的节点转换成一个类似于结果集的表中的一组记录行

nodes()方法,用来把一组由一个查询返回的节点转换成一个类似于结果集的表中的一组记录行

DECLARE @x XML

SET @x='

1

1

1

2

2

2

3

3

3

'

SELECT T.c.query('./hobo/name') AS result

FROM @x.nodes('/root/rogue') T(c);

SELECT T.c.value('(./hobo/name)[1]', 'varchar') AS result

FROM @x.nodes('/root/rogue') T(c);