在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格式也不同,后面再转换的语句也不同,记录一下,省得忘了!!!

最新文章

  1. 专用服务器模式&amp;共享服务器模式
  2. 【JAVA】 UIMnager
  3. Shell编程基础教程7--脚本参数的传递
  4. Windows下安装Elasticsearch
  5. Centos 6.5中使用yum安装jdk
  6. php wampp 访问数据库
  7. mysql 局域网同事之间直接用客户端访问
  8. Java并发编程:Thread类的使用(转载)
  9. Codeforces Round #550 (Div. 3) F. Graph Without Long Directed Paths
  10. 解决genymotion-arm-translation.zip无法拖拽安装的问题
  11. 【Python】keras使用Lenet5识别mnist
  12. StringBuffer中的sBuffer.delete(0,4);
  13. Python中的变量引用对象需注意的几点
  14. 项目中遇到的问题:Gradle传递性依赖冲突
  15. linux系统host修改
  16. 在windows资源管理器添加进入当前目录dos窗口的快捷菜单
  17. QQ自动发送+@好友功能+tencent://功能
  18. [Erlang27]如何监控指定目录下的*.beam文件,如果有改动就更新到指定的节点?
  19. codeblocks 控制台一闪而过
  20. Apache Kafka源码分析 &ndash; Log Management

热门文章

  1. 浅谈js冒泡事件1
  2. ZT 接口和实现分离
  3. SAP成都研究院2018年总共87篇技术文章合集
  4. Event Driven Architecture
  5. No module named _sqlite3
  6. Vue、PHP、Bootstrap联手打造简单数据管理表格
  7. Java虚拟机2:Java内存区域
  8. Yii 读写分离 分表分库
  9. tp3.2中的 I () 方法
  10. 华为路由设备SSH配置