实验数据:

Create table  xmldata
(name NVARCHAR(20),
age int,
sex NVARCHAR(5)
) INSERT INTO xmldata VALUES (N'张三',12,N'男'),
(N'李四',12,N'女'),
(N'王五',12,N'男') SELECT * FROM xmldata

表数据转换XML

FOR XML PATH
--把表数据转换成XML数据 --将数据存入属性中
SELECT name AS '@c1',age AS '@c2',sex AS '@c3' FROM xmldata FOR XML PATH('XMLRow') , root('XMLData')
--PATH('XMLRow')定义行标签名称 , root('XMData')定义根标签名称,定义属性名称要加单引号和@

--将数据存入节点中
SELECT name AS c1,age AS c2,sex AS c3 FROM xmldata FOR XML PATH('XMLRow') , ROOT('XMLData')
--字段别称定义数据节点的名称

解析XML数据

1、xml:        能认识元素、属性和值

    

2、xpath:    寻址语言,类似windows目录的查找(没用过dir命令的话就去面壁)

                

                语法格式,这些语法可以组合为条件:

                "."表示自己,".."表示父亲,"/"表示儿子,"//"表示后代,

                "name"表示按名字查找,"@name"表示按属性查找

                

                "集合[条件]" 表示根据条件取集合的子集,条件可以是

                    数  值:数字,last(),last()-数字 等

                    布尔值:position()<数字,@name='条件',name='条件'

                条件是布尔值的时候可以合并计算:and or

    

3、xquery:    基于xpath标的准查询语言,sqlserver xquery包含如下函数

                exist(xpath条件):返回布尔值表示节点是否存在

                query(xpath条件):返回由符合条件的节点组成的新的xml文档

                value(xpath条件,数据类型):返回指定的标量值,xpath条件结果必须唯一

                nodes(xpath条件): 返回由符合条件的节点组成的一行一列的结果表

declare @data xml
set @data='
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="jp">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
<title lang="cn">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
' SELECT T.C.value('@category','varchar(max)') as category,
T.C.value('title[1]','varchar(max)') as title,
T.C.value('title[1]/@lang','varchar(max)') as lang,
T.C.value('author[1]','varchar(max)') as author,
T.C.value('author[2]','varchar(max)') as author1
FROM @data.nodes('/bookstore/book') as T(C)

Sql Server XML的更多相关文章

  1. Sql Server xml 类型字段的增删改查

    1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需 ...

  2. SQL SERVER XML 学习总结

    SQL  SERVER  XML  学习总结 最新的项目任务要做一个数据同步的功能,这些天都在做技术准备,主要是用到了微软的Service Broker技术,在熟悉使用该技术的同时,又用到了Sql s ...

  3. 转载---SQL Server XML基础学习之<5>--XQuery(query)

    本章写一些SQL Server XML的一些XQuery基础语法,主要讲的query查询语法 T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集. XQuery 基于现有的 XPa ...

  4. SQL Server XML数据解析

    --5.读取XML --下面为多种方法从XML中读取EMAIL DECLARE @x XML SELECT @x = ' <People> <dongsheng> <In ...

  5. SQL Server XML 查询

    [参考1] 18个小实例入门SQLServer XML查询 [参考2] 转载---SQL Server XML基础学习之<5>--XQuery(query)

  6. SQL Server XML转Table

    前言 在SQL Server中有时候我们需要传人一个Table过去,然后可以在存储过程中批量更新,批量的获取相应数据. 但存储过程的参数是固定,所以这里我们可以变通的传人xml类型的参数,然后在存储过 ...

  7. (轉載)sql server xml字段的操作

    原文轉自:http://blog.csdn.net/hliq5399/article/details/8315373 另外可參考:https://msdn.microsoft.com/en-us/li ...

  8. SQL Server ->> XML方法

    1. 得到XML类型中某个节点下子节点的数量 DECLARE @xml xml SET @xml = ' <Parameters> <Parameter name = "p ...

  9. SQL Server XML基础学习之<7>--XML modify() 方法对 XML 数据中插入、更新或删除

    /*------------------------------------------------------------------------------+ #| = : = : = : = : ...

  10. 转载---SQL Server XML基础学习之<7>--XML modify() 方法对 XML 数据中插入、更新或删除

    /*------------------------------------------------------------------------------+ #| = : = : = : = : ...

随机推荐

  1. leetcode — sqrtx

    /** * Source : https://oj.leetcode.com/problems/sqrtx/ * * * Implement int sqrt(int x). * * Compute ...

  2. thinkphp自动填充分析

    thinkphp有一个自动填充字段的方法填充规则如下 array( array(完成字段1,完成规则,[完成条件,附加规则]), array(完成字段2,完成规则,[完成条件,附加规则]), .... ...

  3. [JavaScript] XMLHttpRequest记录

    XMLHttpRequest 使用 XMLHttpRequest 对象可以和服务器进行交互,可以获取到数据,而无需让整个页面进行刷新.这样 web 页面可以做到只更新局部页面,降低了对用户操作的影响. ...

  4. Winform系列——好看的DataGridView折叠控件

    来园子几年了,第一次写博客.以前看到别人的博客就在想:这些人怎么能有这么多时间整理这么多知识,难道他们不用工作.不用写代码.不用交付测试?随着工作阅历的增加,发现其实并不是时间的问题,关键一个字:懒. ...

  5. centos 安装sbt

    1.yum install sbt 2.如果不行,则 curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo sudo mv bi ...

  6. SQL 常用的判断、连表、跨库、去重、分组、ROW_NUMBER()分析函数SQL用法

    常用的SQL 由浅入深 大致上回想一下自己常用的SQL,并做个记录,目标是实现可以通过在此页面查找到自己需要的SQL ,陆续补充    有不足之处,请提醒改正 首先我创建了两个库,每个库两张表.(工作 ...

  7. Java学习笔记之——方法重载

    方法重载: overload 1. 方法签名 组成:方法名(参数列表) 参数列表不同分为哪些情况? (1)有无参数 (2)参数的类型 (3)参数的个数 (4)参数的顺序(前提是类型不一样) 2.方法重 ...

  8. overall error

    Overall error is same with total error in math.

  9. 数据库索引(Oracle和Mysql)学习总结

    旭日Follow_24 的CSDN 博客 ,全文地址请点击: https://mp.csdn.net/postedit/80910082 索引概念:     索引是关系数据库中用于存放每一条记录的一种 ...

  10. Excel通用类工具(二)

    前言 上一篇中写到了用反射来处理类中的不用的属性,但是Excel的列名还得手动输入,这样还是比较麻烦的,今天这篇就利用自定义注解来解决手动传入列名的问题:其实很简单的,只需要在上一篇的基础上加一个类就 ...