摘要:
下文通过举例的方式,详细说明"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. 在vue中使用Autoprefixed

    为了使我们的项目兼容各种浏览器,我们可能会在开发中写大量的前缀.即使有了IDE为我们提供了便捷的方式.但是仍然需要我们去花时间和精力.而这样会浪费我们很多的时间.为了在开发中提升团队的开发效率,并且同 ...

  2. 从零开始学 Web 之 Vue.js(四)Vue的Ajax请求和跨域

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  3. redis学习总结-redis作为MyBatis的自定义缓存

    1.RedisCache.java package com.houtai.cache; import java.util.concurrent.locks.ReadWriteLock; import ...

  4. AspectJ在Spring中的使用

    在上一篇AspectJ的入门中,简单的介绍了下AspectJ的使用,主要是以AspectJ的example作为例子.介绍完后也留下了几个问题:1)我们在spring中并没有看到需要aspectj之类的 ...

  5. 函数计算 Python 连接 SQL Server 小结

    python 连接数据库通常要安装第三方模块,连接 MS SQL Server 需要安装 pymssql .由于 pymsql 依赖于 FreeTDS,对于先于 2.1.3 版本的 pymssql,需 ...

  6. c# 接口的协变和逆变

    如果派生类只是用于输出值,那么这种结构化的委托有效性之间的常数关系叫做协变 就是创建一个派生类委托对象 让派生类赋值给基类对象 协变关键字out 对期望传入基类时允许传入派生对象的特性叫逆变  逆变关 ...

  7. Centos 7.6配置nginx反向代理负载均衡集群

    一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76    nginx负载均衡器 192.168.2.82    web ...

  8. php opcodes运行原理

    谈下php的运行原理--Opcodes. 比如以下一段简单的代码: <?php echo '周伯通‘: ?> 执行这段代码会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend) ...

  9. 23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数

     上章链接: 22.C++- 继承与组合,protected访问级别 继承方式 继承方式位于定义子类的”:”后面,比如: class Line : public Object //继承方式是publi ...

  10. spring boot 打jar包,获取resource路径下的文件

    前言:最近在spring boot项目静态类中获取resource路径下文件,在idea中启动都可以获取,但是打包后变成了jar包 就无法获取到. 我想到了两种方法,一种是根据http访问静态资源比如 ...