博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 中对XML数据的五种基本操作
阅读量:4884 次
发布时间:2019-06-11

本文共 2406 字,大约阅读时间需要 8 分钟。

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()-----返回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

转载于:https://www.cnblogs.com/cxd4321/archive/2011/09/14/2175402.html

你可能感兴趣的文章
十、I/O流——4-输入、输出流体系
查看>>
十二、网络编程——4-基于UDP协议的网络编程
查看>>
异常处理与调试6 - 零基础入门学习Delphi55(完)
查看>>
if语句三种形式
查看>>
正则表达式之字符串验证
查看>>
codeblocks如何支持_tmain?可移植代码的编码推荐
查看>>
省市联动 填坑
查看>>
canvas写的一个小时钟demo
查看>>
原来今天是冬至
查看>>
又混了一天班
查看>>
九度oj 1006
查看>>
HDU6400-2018ACM暑假多校联合训练1004-Parentheses Matrix-构造
查看>>
最短路问题专题
查看>>
《Redis复制与可扩展集群搭建》看后感
查看>>
Jquery Mobile总结
查看>>
223. Rectangle Area
查看>>
spring boot + velocity中文乱码解决方式
查看>>
读罢泪两行,人生成长必须面对的10个残酷事实
查看>>
ASP 32位程序运行与64位问题:ADODB.Connection 错误 '800a0ea9' 未指定提供程序,也没有指派的默认提供程序。...
查看>>
xcode-git笔记
查看>>