转载---SQL Server XML基础学习<1>之--FOR XML PATH

时间:2022-09-07 16:08:08

--> 测试数据:#tb
IF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL 
   DROP TABLE #tb
GO 
CREATE TABLE #tb
       (
        [id] INT IDENTITY PRIMARY KEY ,
        [name] VARCHAR(4),
        [type] VARCHAR(10)
       )
INSERT  #tb
        SELECT  '彪' , '流氓'
        UNION ALL
        SELECT  '阿紫' , '流氓'
        UNION ALL
        SELECT  '小强' , '流氓'
        UNION ALL
        SELECT  '光辉' , '臭流氓'
        UNION ALL
        SELECT  '小D' , '臭流氓'
        UNION ALL
        SELECT  '野子' , '臭流氓'
--------------开始查询--------------------------
--没有名称的列
--生成此 XML。 默认情况下,针对行集中的每一行,生成的 XML 中将生成一个相应的 <row> 元素。 这与 RAW 模式相同。
SELECT 1 FOR XML PATH
--延伸
SELECT [name]+'' FROM #tb FOR XML PATH
--去掉<row> 元素
SELECT [name]+'' FROM #tb FOR XML PATH('')
--具有名称的列
SELECT [name] FROM #tb FOR XML PATH
SELECT * FROM #tb FOR XML PATH
--列名以 @ 符号开头。
SELECT id  AS '@id',[name] FROM #tb FOR XML PATH
--列名不以 @ 符号开头
SELECT [name] AS 臭流氓 FROM #tb FOR XML PATH('一群流氓')
--列名以 @ 符号开头并包含斜杠标记 (/)
SELECT id  AS '@id',
[name] AS '一群流氓/臭流氓' 
FROM #tb FOR XML PATH
--名称指定为通配符的列
--如果指定的列名是一个通配符 (*),则插入此列的内容时就像没有指定列名那样插入。 
--如果此列不是 xml 类型的列,则此列的内容将作为文本节点插入
SELECT id  AS '@id',
[name] AS '*' 
FROM #tb FOR XML PATH
--列名为 XPath 节点测试的列
--text()
--对于名为 text() 的列,该列中的字符串值将被添加为文本节点。
--comment()
--对于名为 comment() 的列,该列中的字符串值将被添加为 XML 注释。
--node()
--对于名为 node() 的列,结果与列名为通配符 (*) 时相同。
--处理指令(名称)
--如果列名为处理指令,该列中的字符串值将被添加为此处理指令目标名称的 PI 值。

SELECT id  AS '@id',
'臭流氓' AS 'text()',
'一个臭流氓'                   as "processing-instruction(PI)",
'chouliumang' AS 'comment()',
[name] AS 'EmpName/text()', 
[name] AS '臭流氓/node()'
FROM #tb
WHERE id=1
FOR XML PATH
/*
----------------结果----------------------------

<row id="1">臭流氓<?PI 一个臭流氓?><!--chouliumang--><EmpName>彪</EmpName><臭流氓>彪</臭流氓></row>
*/

--带有指定为 data() 的路径的列名
--如果被指定为列名的路径为 data(),则在生成的 XML 中,该值将被作为一个原子值来处理。 
--如果序列化中的下一项也是一个原子值,则将向 XML 中添加一个空格字符。 
--这在创建列表类型化元素值和属性值时很有用。 以下查询将检索产品型号 ID、名称和该产品型号中的产品列表。
SELECT id  AS '@id',
[name] AS '@name',
[name],
[type] AS 'data()'
FROM #tb
WHERE id=1
FOR XML PATH
/* 
*/
--默认情况下,列中的 Null 值映射为“缺少相应的属性、节点或元素”。 
--通过使用 ELEMENTS 指令请求以元素为中心的 XML 并指定 XSINIL 来请求为 NULL 值添加元素,
--可以覆盖此默认行为,如以下查询所示:
--未指定 XSINIL,将缺少 <null> 元素。
SELECT id  AS '@id',
NULL AS 'xx/null',
[name] AS 'xx/name',
[type] AS 'xx/type'
FROM #tb
FOR XML PATH
--2
SELECT id  AS '@id',
NULL AS 'xx/null',
[name] AS 'xx/name',
[type] AS 'xx/type'
FROM #tb
FOR XML PATH, ELEMENTS XSINIL

--ROOT/TYPE/BINARY选项
SELECT id  AS '@id',
[name] ,
[type],
0x78786F6F AS 'VARBINARY'
FROM #tb
FOR XML PATH,
ROOT('oo'),--指定向产生的 XML 中添加单个*元素。 可以选择指定要生成的根元素名称。 默认值为“root”。
TYPE,--指定查询以 xml 类型返回结果。
BINARY BASE64--如果指定 BINARY Base64 选项,则查询所返回的任何二进制数据都用 base64 编码格式表示。
--若要使用 RAW 和 EXPLICIT 模式检索二进制数据,必须指定此选项。 
--在 AUTO 模式中,默认情况下将二进制数据作为引用返回。 有关使用示例,请参阅将 RAW 模式与 FOR XML 一起使用。

转载---SQL Server XML基础学习<1>之--FOR XML PATH的更多相关文章

  1. 转载---SQL Server XML基础学习&lt&semi;3&gt&semi;之--FOR XML EXPLICIT

    --使用 RAW 和 AUTO 模式不能很好地控制从查询结果生成的 XML 的形状.--但是,对于要从查询结果生成 XML,EXPLICIT 模式会提供非常好的灵活性. --必须以特定的方式编写 EX ...

  2. 转载---SQL Server XML基础学习&lt&semi;2&gt&semi;之--FOR XML AUTO&sol;RAW

    本文主要介绍FOR XML 的 AUTO 模式和 RAW 模式 --AUTO 模式将查询结果以嵌套 XML 元素的方式返回.这不能较好地控制从查询结果生成的 XML 的形式. --如果要生成简单的层次 ...

  3. sql server 数据库基础学习心得 思维导图

  4. XML基础学习02&lt&semi;linq to xml&gt&semi;

    Linq to XML的理解 1:这是一种比较好的操作Xml的工具. àXDocument 文档 àXElement 元素 àXAttribute 属性 àXText 文本 2:这里还是和我们之前创建 ...

  5. C&num;面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp&period;Net MVC4中的全局过滤器 C&num;语法——泛型的多种应用

    C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备)  https://blog.csdn.net/u013519551/article/details/51220841 1. . ...

  6. mysql与sql server参照对比学习mysql

    mysql与sql server参照对比学习mysql 关键词:mysql语法.mysql基础 转自桦仔系列:http://www.cnblogs.com/lyhabc/p/3691555.html ...

  7. cmd常用命令 和 sql server相关基础

    在Java开发中 ms sql server 接触算是比较少的,本文记录一些ms sql server的基础知识. 1. 为表字段增加索引:create index user_openid on us ...

  8. Sql Server数据库基础

    --------------------------------------第一章  Sql Server数据库基础------------------------------------------ ...

  9. 第一篇——第一文 SQL Server 备份基础

    原文:第一篇--第一文 SQL Server 备份基础 当看这篇文章之前,请先给你的所有重要的库做一次完整数据库备份.下面正式开始备份还原的旅程. 原文出处: http://blog.csdn.net ...

随机推荐

  1. C&num; unity3d 贪吃蛇 游戏 源码 及其感想

    这个游戏的设计过程是这样的: 1,创建

  2. View&period;setTag&lpar;key&comma;object&rpar;异常:The key must be an application-specific resource id&period;

    07-11 13:43:26.184: E/AndroidRuntime(10229): FATAL EXCEPTION: main07-11 13:43:26.184: E/AndroidRunti ...

  3. C&num; 断点续传原理与实现

    在了解HTTP断点续传的原理之前,让我们先来了解一下HTTP协议,HTTP协议是一种基于tcp的简单协议,分为请求和回复两种.请求协议是由 客户机(浏览器)向服务器(WEB SERVER)提交请求时发 ...

  4. 【javascript基础】5、创建对象

    前言 今天从家里回到了学校,在家呆了十天,胖了几斤的重量,又折腾回学校了,春节回家真是艰辛的路途.随便扯扯我的往返行程:为了省钱我没有选择直飞到长春往返都是到北京转的,这样我和女朋友可以节省4000块 ...

  5. CruiseControl&period;Net学习记录

    一.下载 官网 二.安装 本文版本:1.8.5.0 运行安装程序,按照提示"下一步”,直到完成即可. 安装完毕之后, 生成一个windows服务,CruiseControl.NET Serv ...

  6. &lbrack;转&rsqb;编译 JavaScriptCore For iOS

    from: http://phoboslab.org/log/2011/06/javascriptcore-project-files-for-ios github: https://github.c ...

  7. Python中BeautifulSoup中对HTML标签的提取

    一开始使用了beautifulSoup的get_text()进行字符串的提取,后来一直提取失败,并提示错误为TypeError: 'NoneType' object is not callable 返 ...

  8. 求一个int型整数的两种递减数之和(java)--2015华为机试题

    题目描述: 给出一个整数(负数使用其绝对值),输出这个整数中的两种递减数(1.最大递减数:2.递减数中各位数之和最大的数)之和. 递减数:一个数字的递减数是指相邻的数位从大到小排列的数字,不包含相邻的 ...

  9. Zabbix实战-简易教程系列

    一.基础篇(安装和接入) Zabbix实战-简易教程--总流程  Zabbix实战-简易教程--整体架构图 Zabbix实战-简易教程--DB安装和表分区 Zabbix实战-简易教程--Server端 ...

  10. Mybatis 系列1

    第一篇教程, 就先简单地写个demo, 一起来认识一下mybatis吧. 为了方便,我使用了maven, 至于maven怎么使用, 我就不做介绍了.没用过maven的, 也不影响阅读. 一.Mybat ...