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格式也不同,后面再转换的语句也不同,记录一下,省得忘了!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?