SQL Server 中对 FOR XML和FROM的转换处理
在SQL Server中对XML的再操作转换:
方法1:
--生成XML
SELECT * FROM [T_BAS_预算科目] FOR XML PATH --把XML转成SQL表
declare @XmlData nvarchar(max)
set @XmlData = '<row 科目编码="0" 科目名称="全部" />
<row 科目编码="1" 上级编码="0" 科目名称="功能收入分类" 科目级次="0" 预算年度="2016" 显示级别="0" />
<row 科目编码="101" 上级编码="1" 科目名称="税收收入" 科目级次="1" 预算年度="2016" 显示级别="0" />
<row 科目编码="10101" 上级编码="101" 科目名称="增值税" 科目级次="1" 预算年度="2016" 显示级别="1" />
<row 科目编码="1010101" 上级编码="10101" 科目名称="国内增值税" 科目级次="1" 预算年度="2016" 显示级别="2" />
<row 科目编码="101010101" 上级编码="1010101" 科目名称="国有企业增值税" 科目级次="1" 预算年度="2016" 显示级别="3" />
<row 科目编码="101010102" 上级编码="1010101" 科目名称="集体企业增值税" 科目级次="1" 预算年度="2016" 显示级别="3" />
<row 科目编码="101010103" 上级编码="1010101" 科目名称="股份制企业增值税" 科目级次="1" 预算年度="2016" 显示级别="3" />' declare @MxDataList xml
set @MxDataList = cast(@XmlData as xml) SELECT
C.value('./@科目编码','varchar(30)') as 科目编码,
C.value('./@上级编码','varchar(30)') as 上级编码,
C.value('./@科目名称','varchar(30)') as 科目名称,
C.value('./@科目级次','varchar(30)') as 科目级次
FROM @MxDataList.nodes('/row') T(C)
方法2:
--生成XML
SELECT * FROM [T_BAS_预算科目] FOR XML RAW --把XML转成SQL表
declare @XmlData nvarchar(max)
set @XmlData = '<row>
<科目编码>0</科目编码>
<科目名称>全部</科目名称>
</row>
<row>
<科目编码>1</科目编码>
<上级编码>0</上级编码>
<科目名称>功能收入分类</科目名称>
<科目级次>0</科目级次>
<预算年度>2016</预算年度>
<显示级别>0</显示级别>
</row>
<row>
<科目编码>101</科目编码>
<上级编码>1</上级编码>
<科目名称>税收收入</科目名称>
<科目级次>1</科目级次>
<预算年度>2016</预算年度>
<显示级别>0</显示级别>
</row>' declare @MxDataList xml
set @MxDataList = cast(@XmlData as xml) SELECT
C.value('(*)[1]','varchar(30)') as 科目编码,
C.value('(*)[2]','varchar(30)') as 上级编码,
C.value('(*)[3]','varchar(30)') as 科目名称,
C.value('(*)[4]','varchar(30)') as 科目级次
FROM @MxDataList.nodes('/row') T(C)
以上两种方法,随着 FOR XML后面的参数不同,生成的XML格式也不同,后面再转换的语句也不同,记录一下,省得忘了!!!
SQL Server 中对 FOR XML和FROM的转换处理的更多相关文章
- 如果正确读取SQL Server中的扩展事件?
SQL Server中使用扩展事件捕捉所需的信息后,可以选择存放的位置.比如说内存或文件中,但无论存在哪里,其本质都是一个大XML.因此在SQL Server中读取该XML就是解析扩展事件结果 ...
- sql server中对xml进行操作
一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XM ...
- SQL SERVER中XML查询:FOR XML指定PATH
SQL SERVER中XML查询:FOR XML指定PATH 前言 在SQL SERVER中,XML查询能够指定RAW,AUTO,EXPLICIT,PATH.本文用一些实例介绍SQL SERVER中指 ...
- SQL Server中提前找到隐式转换提升性能的办法
http://www.cnblogs.com/shanksgao/p/4254942.html 高兄这篇文章很好的谈论了由于数据隐式转换造成执行计划不准确,从而造成了死锁.那如果在事情出现之前 ...
- SQL Server中查询数据库及表的信息语句
/* -- 本文件主要是汇总了 Microsoft SQL Server 中有关数据库与表的相关信息查询语句. -- 下面的查询语句中一般给出两种查询方法, -- A方法访问系统表,适应于SQL 20 ...
- 深入浅出SQL Server中的死锁
简介 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的.理解死锁首先需要对死锁所涉及的相关观念有一个理解. 一些基础知识 要理解SQL Server中的死锁,更好的方式是通过类比从更大的面理 ...
- SQL Server中关于跟踪(Trace)那点事
前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...
- 为什么SQL语句Where 1=1 and在SQL Server中不影响性能
最近一个朋友和我探讨关于Where 1=1 and这种形式的语句会不会影响性能.最后结论是不影响. 虽然结论正确,但对问题的认识却远远没有解决问题的根本.实际上在T-SQL语句的书写过 ...
- 【转】SQL Server中关于跟踪(Trace)那点事
前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...
随机推荐
- shell----删除文件中的^M
在Linux下使用vi来查看一些在Windows下创建的文本文件,有时会发现在行尾有一些“^M”.有几种方法可以处理. 1.使用vi的替换功能.启动vi,进入命令模式,输入以下命令: :%s/^M$/ ...
- Oracle表空间和用户常用语句
--删除空的表空间,但是不包含物理文件drop tablespace tablespace_name;--删除非空表空间,但是不包含物理文件drop tablespace tablespace_nam ...
- IBM MQ介绍
转自:http://hi.baidu.com/lubezhang/blog/item/bd308b3b7ecce3ec14cecb4f.html IBM MQ(IBM Message Queue)是I ...
- UVa 11584 - Partitioning by Palindromes(线性DP + 预处理)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- shiro权限配置的细节问题&认证
细节: ---[urls]部分配置,其格式是 url=拦截器[参数] ,拦截器[参数] ---如果当前请求的 url 匹配 [urls] 部分或者某个url模式,将会执行配置的拦截器 ---an ...
- windows自定义快捷键功能
如下:
- 阅读layim代码小记,监听事件实现方法
(function (win) { //注册事件 var chat = function () { $('#open').on('click', function () { sendMessage() ...
- python2.7 安装Django
目前Django最新版是2.0,不支持Python2,在使用pip 安装的时候会报错,pip默认安装的是最新的稳定版本 使用pip指定安装的版本:pip install django==1.11.4 ...
- 配置RedisTemplate、JedisPoolConfig、JedisConnectionFactory+自定义序列化 (xml+java方式)+使用
java方式配置RedisTemplate //spring注入ben //@Bean(name = "redisTemplate") public RedisTemplate i ...
- Razor
什么是Razor 1.Razor是一种将基于服务器的代码添加到网页中的标记语法 2.Razor具有传统ASP.NET标记功能 3.Razor是一种服务器端的标记语法 4.Razor同时支持C#和VB ...