SQLServer XML类型
sqlserver 数据类型xml 对存入的数据有严格的要求,必须存放的是正确格式的xml. 一般的xml,头部信息为<?xml version="1.0" encoding="UTF-8"?> ,这会让你存入失败.
先建立一个获取xml的函数
SQL Server从2005起开始支持xml类型,这个数据类型对于后期的改变非常有用。一对多的关系在后期变成了多对多的关系,XML类型就是一个不错的选择。
1、创建测试数据
创建表
--创建表,包含Xml类型列
CREATE TABLE Person
(
Id int,
Info xml
)
插入测试数据
--插入3条测试数据 INSERT Person VALUES(1,'') INSERT Person VALUES(2,' 1 刘备 ') INSERT Person VALUES(3,' 2 关羽 ') 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、创建索引
- 1、query(XPath条件):返回xml 类型的节点内容
- 2、value(XPath条件,数据类型):返回标量值
- 3、exist(XPath条件):返回是否存在
- 4、nodes(XPath条件):返回由符合条件的节点组成的多行一列的结果表
- 1、modify(insert)增加节点
- 2、modify(delete )删除节点
- 3、modify(replace value of) --更新单个节点
- 1、raw模式
- 2、auto模式:表名作为元素名、生成简单的层次结构
- 3、path模式
SQL Server从2005起开始支持xml类型,这个数据类型对于后期的改变非常有用。一对多的关系在后期变成了多对多的关系,XML类型就是一个不错的选择。
SQL Server解析XML数据的方法详解