SQLServer XML类型

SQL Server从2005起开始支持xml类型,这个数据类型对于后期的改变非常有用。一对多的关系在后期变成了多对多的关系,XML类型就是一个不错的选择。

1、创建测试数据

创建表

  --创建表,包含Xml类型列
  CREATE TABLE Person
  (
      Id int,
      Info xml
  )

插入测试数据

  --插入3条测试数据
  INSERT Person VALUES(1,'<Person><ID>1</ID><Name>刘备</Name></Person>')
  INSERT Person VALUES(2,'<Person><ID>2</ID><Name>关羽</Name></Person>')
  INSERT Person VALUES(3,'<Person><ID>3</ID><Name>张飞</Name></Person>')

2、查询节点内容

query()方法

  --查询节点内容query()方法
  SELECT Id,Info.query('(/Person/Name)[1]') FROM Person WHERE ID = 2

3、查询值

value()方法

  --查询值value()方法
  SELECT Id,Info.value('(/Person/Name)[1]','VARCHAR(50)') FROM Person WHERE ID = 2
  SELECT * FROM Person WHERE Info.value('(/Person/Name)[1]','VARCHAR(50)') = '张飞'

4、查询是否存在

exist()方法

  --查询是否存在 exist()方法
  SELECT * FROM Person WHERE Info.exist('(/Person/Name)[1]') = 1

5、查询节点

nodes()方法

  --查询节点
  SELECT
T2.Loc.query('.')   FROM Person   CROSS APPLY Info.nodes('/Person/Name') as T2(Loc)

6、修改XML

modify()方法

1、增加节点

  --modify(insert)增加节点
  UPDATE Person SET 
  Info.modify('
      insert
      <Age>25</Age>
      into (/Person)[1]'
  )
  WHERE Id = 3

2、删除节点

  -- 删除节点内容(xQuery知识,没有text()就直接删除节点)
  UPDATE Person
  SET Info.modify('
    delete  (/Person)[1]/Age/text()'
  )
  where ID = 3

 

posted on 2014-04-11 18:31  逆心 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/kissdodog/p/3659295.html