SQLServer XML类型


sqlserver 数据类型xml 对存入的数据有严格的要求,必须存放的是正确格式的xml. 一般的xml,头部信息为<?xml version="1.0" encoding="UTF-8"?> ,这会让你存入失败.
aa 这样不带头部信息的是可以存入的.
先建立一个获取xml的函数

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

  1、创建测试数据

  创建表

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

  插入测试数据

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

  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
      25
      into (/Person)[1]'
  )
  WHERE Id = 3

  2、删除节点

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

 https://www.jb51.net/article/248831.htm

如果您有一个varchar字段,您可以轻松地执行SELECT * FROM TABLE WHERE ColumnA LIKE '%Test%'次,以查看该列是否包含某个字符串.

对于XML类型,您是如何做到这一点的?

我有下面的代码,它只返回具有"文本"节点的行,但我需要在该节点内搜索

https://blog.csdn.net/china_shrimp/article/details/78837019

一、创建测试数据,指定字段数据类型为XML
  • 1、创建表
  • 2、插入测试数据
  • 3、插入XML文件数据
  • 4、创建索引
  • 二、查询XML数据
    • 1、query(XPath条件):返回xml 类型的节点内容
    • 2、value(XPath条件,数据类型):返回标量值
    • 3、exist(XPath条件):返回是否存在
    • 4、nodes(XPath条件):返回由符合条件的节点组成的多行一列的结果表
  • 三、modify():修改XML修改XML字段
    • 1、modify(insert)增加节点
    • 2、modify(delete )删除节点
    • 3、modify(replace value of) --更新单个节点
  • 四、for xml子句:表数据自动生成xml格式
    • 1、raw模式
    • 2、auto模式:表名作为元素名、生成简单的层次结构
    • 3、path模式

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

    SQL Server解析XML数据的方法详解

  • SQL Server中的XML数据进行insert、update、delete操作实现代码
  • SQLServer2005 XML数据操作代码
  • 关于SQLServer2005的学习笔记 XML的处理
  • SQLSERVER 2005中使用sql语句对xml文件和其数据的进行操作(很全面)
  • SQL Server中的XML数据进行insert、update、delete
  • SQLServer XML数据的五种基本操作
  • 相关