SQLServer XML数据的五种基本操作
程序员文章站
2023-11-12 16:06:46
1.xml.exist 输入为xquery表达式,返回0,1或是null。0表示不存在,1表示存在,null表示输入为空 2.xml.value 输入为xquery表达式,...
1.xml.exist
输入为xquery表达式,返回0,1或是null。0表示不存在,1表示存在,null表示输入为空
2.xml.value
输入为xquery表达式,返回一个sql server标量值
3.xml.query
输入为xquery表达式,返回一个sql server xml类型流
4.xml.nodes
输入为xquery表达式,返回一个xml格式文档的一列行集
5.xml.modify
使用xquery表达式对xml的节点进行insert , update 和 delete 操作。
下面通过例子对上面的五种操作进行说明:
declare @xmlvar xml = '
<catalog>
<book category="itpro">
<title>windows step by step</title>
<author>bill zack</author>
<price>49.99</price>
</book>
<book category="developer">
<title>developing ado .net</title>
<author>andrew brust</author>
<price>39.93</price>
</book>
<book category="itpro">
<title>windows cluster server</title>
<author>stephen forte</author>
<price>59.99</price>
</book>
</catalog>'
1. xml.exist
select @xmlvar.exist('/catalog/book')-----返回1
select @xmlvar.exist('/catalog/book/@category')-----返回1
select @xmlvar.exist('/catalog/book1')-----返回0
set @xmlvar = null
select @xmlvar.exist('/catalog/book')-----返回null
2.xml.value
select @xmlvar.value('/catalog[1]/book[1]','varchar(max)')
select @xmlvar.value('/catalog[1]/book[2]/@category','varchar(max)')
select @xmlvar.value('/catalog[2]/book[1]','varchar(max)')
结果集为:
windows step by stepbill zack49.99 developer null
3.xml.query
select @xmlvar.query('/catalog[1]/book')
select @xmlvar.query('/catalog[1]/book[1]')
select @xmlvar.query('/catalog[1]/book[2]/author')
结果集分别为:
<book category="itpro">
<title>windows step by step</title>
<author>bill zack</author>
<price>49.99</price>
</book>
<book category="developer">
<title>developing ado .net</title>
<author>andrew brust</author>
<price>39.93</price>
</book>
<book category="itpro">
<title>windows cluster server</title>
<author>stephen forte</author>
<price>59.99</price>
</book>
<book category="itpro">
<title>windows step by step</title>
<author>bill zack</author>
<price>49.99</price>
</book>
<author>andrew brust</author>
4.xml.nodes
select t.c.query('.') as result from @xmlvar.nodes('/catalog/book') as t(c)
select t.c.query('title') as result from @xmlvar.nodes('/catalog/book') as t(c)
结果集分别为:
<book category="itpro"><title>windows step by step</title><author>bill …………
<book category="developer"><title>developing ado .net</title><author>andrew …………
<book category="itpro"><title>windows cluster server</title><author>stephen …………
<title>windows step by step</title>
<title>developing ado .net</title>
<title>windows cluster server</title>
5.xml.modify
关于modify内容,请参见下一篇文章。
输入为xquery表达式,返回0,1或是null。0表示不存在,1表示存在,null表示输入为空
2.xml.value
输入为xquery表达式,返回一个sql server标量值
3.xml.query
输入为xquery表达式,返回一个sql server xml类型流
4.xml.nodes
输入为xquery表达式,返回一个xml格式文档的一列行集
5.xml.modify
使用xquery表达式对xml的节点进行insert , update 和 delete 操作。
下面通过例子对上面的五种操作进行说明:
declare @xmlvar xml = '
<catalog>
<book category="itpro">
<title>windows step by step</title>
<author>bill zack</author>
<price>49.99</price>
</book>
<book category="developer">
<title>developing ado .net</title>
<author>andrew brust</author>
<price>39.93</price>
</book>
<book category="itpro">
<title>windows cluster server</title>
<author>stephen forte</author>
<price>59.99</price>
</book>
</catalog>'
1. xml.exist
select @xmlvar.exist('/catalog/book')-----返回1
select @xmlvar.exist('/catalog/book/@category')-----返回1
select @xmlvar.exist('/catalog/book1')-----返回0
set @xmlvar = null
select @xmlvar.exist('/catalog/book')-----返回null
2.xml.value
select @xmlvar.value('/catalog[1]/book[1]','varchar(max)')
select @xmlvar.value('/catalog[1]/book[2]/@category','varchar(max)')
select @xmlvar.value('/catalog[2]/book[1]','varchar(max)')
结果集为:
windows step by stepbill zack49.99 developer null
3.xml.query
select @xmlvar.query('/catalog[1]/book')
select @xmlvar.query('/catalog[1]/book[1]')
select @xmlvar.query('/catalog[1]/book[2]/author')
结果集分别为:
<book category="itpro">
<title>windows step by step</title>
<author>bill zack</author>
<price>49.99</price>
</book>
<book category="developer">
<title>developing ado .net</title>
<author>andrew brust</author>
<price>39.93</price>
</book>
<book category="itpro">
<title>windows cluster server</title>
<author>stephen forte</author>
<price>59.99</price>
</book>
<book category="itpro">
<title>windows step by step</title>
<author>bill zack</author>
<price>49.99</price>
</book>
<author>andrew brust</author>
4.xml.nodes
select t.c.query('.') as result from @xmlvar.nodes('/catalog/book') as t(c)
select t.c.query('title') as result from @xmlvar.nodes('/catalog/book') as t(c)
结果集分别为:
<book category="itpro"><title>windows step by step</title><author>bill …………
<book category="developer"><title>developing ado .net</title><author>andrew …………
<book category="itpro"><title>windows cluster server</title><author>stephen …………
<title>windows step by step</title>
<title>developing ado .net</title>
<title>windows cluster server</title>
5.xml.modify
关于modify内容,请参见下一篇文章。
上一篇: Sql 批量查看字符所在的表及字段
下一篇: Python复制文件操作实例详解
推荐阅读
-
SQLServer XML数据的五种基本操作
-
SQL Server中的XML数据进行insert、update、delete操作实现代码
-
Sqlserver 2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
-
MySQL入门(一) 数据表数据库的基本操作
-
Day2 python 的基本数据类型及操作
-
SQLSERVER 2005中使用sql语句对xml文件和其数据的进行操作(很全面)
-
php操作XML、读取数据和写入数据的实现代码
-
iOS开发中使用SQL语句操作数据库的基本用法指南
-
Redis的使用--基本数据类型的操作命令和应用场景
-
MySQL数据库的基本查询及操作讲解