摘要:
下文通过举例的方式,详细说明"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

最新文章

  1. DOM hash
  2. JQuery EasyUI DataGrid常用操作及注意事项(未完)
  3. android6.0锁屏界面接收新通知处理流程
  4. [git] ignore文件规则失效
  5. Apache Spark源码走读之3 -- Task运行期之函数调用关系分析
  6. An unknown Subversion error occurred. (code = 155037)
  7. android 中的几种目录
  8. SQL 数据库基础语句
  9. 我的第一个C语言程序 (A+B Problem)(cheney-yang)
  10. JAVA的四种引用,强弱软虚用到的场景
  11. WinForm 控件不闪烁
  12. python 文件夹操作
  13. Delphi Screen.DataModuleCount 总是返回 0!Delphi 的 Bug? DataModuleCount = 0
  14. getElementById和$()获取值一点注意事项
  15. ug nx7.5安装方法(图文详解)
  16. flask框架詳解
  17. MYSQL的价格
  18. 第 5 章 网络 - 031 - none和host网络的适用场景
  19. JVM活学活用——类加载机制
  20. 函数和常用模块【day05】:装饰器前奏(一)

热门文章

  1. idea启动多个tomcat失败
  2. 10分钟学会使用YOLO及Opencv实现目标检测(下)|附源码
  3. Keras 构建DNN 对用户名检测判断是否为非法用户名(从数据预处理到模型在线预测)
  4. [机器学习]正则化方法 -- Regularization
  5. python三大神器之fabric(2.0新特性)
  6. SOAP报文转成JAVA对象
  7. μC/OS-II 任务的同步与通信 --- 消息邮箱
  8. .net 数据类型转换int.Parse()与int.TryParse
  9. c# dllimport 调用函数,参数乱码
  10. jqgrid中的column的日期格式