摘要:
下文通过举例的方式,详细说明"for xml EXPLICIT"关键字的用法,如下所示:
实验环境:sql server 2008 R2


EXPLICIT的功能:将数据表采用特定的形式返回xml数据。

create table test
(keyId int identity,
sort nvarchar(10),
info nvarchar(30)
)
insert into test(sort,info)
values('衣服','A号'),
('衣服','B号'),('衣服','C号'),
('鞋子','D'),('鞋子','E'),
('鞋子','F')
go ---使用explicit模式查询数据,必须指定特定的格式,sql脚本会根据特定模式生成相应的xml。
---使用explicit模式查询数据注意事项:
/*
返回第一列必须为:当前元素的行号,列名必须为"Tag",数据类型需为整型,
数值为1代表第一层元素,数值为2代表第二层元素
返回第二列为父级元素的编号,,列名必须为"Parent" ,Tag同Parent之间形成一个上下级的关系,
parent中必须有元素为null或0,代表顶层元素。
*/
-----例: SELECT
1 AS Tag,--Tag 列必须存在,1表示第一层节点
NULL AS Parent,--Parent 列必须存在, null代表第一级别
3 AS [node!1]
--"node!1"表示根节点 此种形式代表的是根节点。
--"node" 节点标签名称 元素名称
--"1" 节点层次
FOR XML EXPLICIT ---------------------------------------------------------
/*
[node!2!id!ELEMENT]
node 代表的是节点名称;
2代表的节点层次;
keyId 表示的是元素名称;.
ELEMENT 选项表示向 <node> 元素添加了
<keyId>元素子级,而不是添加属性
*/ SELECT
1 AS Tag,
NULL AS Parent,
8 AS [root!1],
88 AS [node!2!id!ELEMENT]
FOR XML EXPLICIT ---------------------
SELECT
1 AS Tag,
NULL AS Parent,
8 AS [root!1],
null AS [node!2!keyId!ELEMENT]
UNION ALL
SELECT
2 AS Tag,--表示第二层
1 AS Parent,--指向父节点 tag=1
NULL ,
keyId
FROM test ---WHERE keyId=1
FOR XML EXPLICIT SELECT
1 AS Tag,
NULL AS Parent,
8 AS [root!1],
null AS [node!2!keyId!ELEMENT],
null AS [nodeExtend!3!sort!ELEMENT]
UNION ALL
SELECT
2 AS Tag,--表示第二层
1 AS Parent,--指向父节点 tag=1
NULL ,
keyId,
null
FROM test WHERE keyId=1
union all
SELECT
3 AS Tag,--表示第二层
2 AS Parent,--指向父节点 tag=1
NULL ,
keyId,
sort
FROM test WHERE keyId=2 FOR XML EXPLICIT go
truncate table test
drop table test

转自:http://www.maomao365.com/?p=7463

mssql sqlserver for xml EXPLICIT 用法详解说明的更多相关文章

  1. SQLServer中merge函数用法详解

    http://www.jb51.net/article/75302.htm Merge关键字是一个神奇的DML关键字.它在SQL Server 2008被引入,它能将Insert,Update,Del ...

  2. Class.forName()用法详解

    Class.forName()用法详解 标签: classjvmjdbc数据库documentationjava 2012-03-29 09:39 40414人阅读 评论(8) 收藏 举报  分类: ...

  3. CentOS7下Firewall防火墙配置用法详解

    官方文档地址: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide ...

  4. crossdomain.xml的配置详解

    目录 1 简介 2 crossdomain.xml的配置详解 3 总结 1 简介 flash在跨域时唯一的限制策略就是crossdomain.xml文件,该文件限制了flash是否可以跨域读写数据以及 ...

  5. 1:CSS中一些@规则的用法小结 2: @media用法详解

    第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下     at-rule ...

  6. SQL中CONVERT()函数用法详解

    SQL中CONVERT函数格式: CONVERT(data_type,expression[,style]) 参数说明: expression 是任何有效的 Microsoft® SQL Server ...

  7. 转载 LayoutInflater的inflate函数用法详解

    http://www.open-open.com/lib/view/open1328837587484.html LayoutInflater的inflate函数用法详解 LayoutInflater ...

  8. Hadoop生态圈-zookeeper的API用法详解

    Hadoop生态圈-zookeeper的API用法详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.测试前准备 1>.开启集群 [yinzhengjie@s101 ~] ...

  9. Android Fragment用法详解(2)--动态添加Fragment

    在上一篇文章<Android Fragment用法详解(1)--静态使用Fragment>我们讲解了Fragment的最简单的用法.这次我们来说一说Fragment复杂一丢丢的用法.在代码 ...

随机推荐

  1. 浅谈JavaScript 函数作用域当中的“提升”现象

    在JavaScript当中,定义变量通过var操作符+变量名.但是不加 var 操作符,直接赋值也是可以的. 例如 : message = "hello JavaScript ! " ...

  2. centos7修改网卡名称为eth0-技术流ken

    前言 在配置集群的时候,需要保持网卡名称一致,所以我们需要修改centos7中的网卡名称为eth0. 检查网卡 检查网卡,现在网卡名称是ens33 [root@localhost ~]# ip a : ...

  3. eclipse如何将项目上传到码云

    把Eclipse项目上传到码云的步骤: 一.将代码提交到本地 1.登录码云:新建项目 2.输入项目名: 3.空项目创建成功如下图: 4.右键点击Eclipse的项目,选择“Team”——>“Sh ...

  4. [转]MySQL 表锁和行锁机制

    本文转自:http://www.cnblogs.com/itdragon/p/8194622.html MySQL 表锁和行锁机制 行锁变表锁,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整 ...

  5. [转]php hash_pbkdf2 和 node.js crypto.pbkdf2

    http://php.net/manual/en/function.hash-pbkdf2.php https://nodejs.org/api/crypto.html#crypto_crypto_p ...

  6. C#正则表达式。

    什么是正则表达式: 正则表达式是用来进行文本处理的技术,是语言无关的. 是由普通字符和特殊字符组成的文字模式,用来描述字符串的特征. 元字符: 1.  .    :  除 \n 以外的任意的单个字符. ...

  7. nginx静态资源文件无法访问,403 forbidden错误

    在安装 nginx 服务器后,我想把网站的根目录设置为 /root/www/ ,于是对 nginx 的 nginx.conf 文件进行配置 先打开 nginx.conf #user nobody; w ...

  8. springMVC_08文件上传

    一.步骤总结 导入jar包 配置web.xml 在src目录下创建配置文件mvc.xml 创建前段页面fileupload.jsp 创建controller类HelloController 配置mvc ...

  9. Spring Bean的生命周期相关博客

    最近得面试题一直 问 Spring 得生命周期,鉴于自己还未阅读过源码 所以只能是自己 背一波了.属实不懂硬背得作用,但是无奈被各位面试官打败了.等以后有时间了 一定要阅读几遍spring的 源码 有 ...

  10. 【Tomcat】Tomcat的类加载机制

    在Tomcat中主要有以下几种类加载器:(图片来自网络) tomcat启动时,会创建几种类加载器: 1 Bootstrap 引导类加载器 加载JVM启动所需的类,以及标准扩展类,位于jre/lib/e ...