SQL Server XML变量转为Json文本
2016-03-14 15:15
330 查看
1 -- create function 2 create function [dbo].[fnXmlToJson] (@XmlData xml) 3 returns nvarchar(max) 4 as 5 begin 6 return 7 (select stuff( 8 (select 9 * 10 from 11 (select 12 ',{'+ 13 stuff( 14 (select 15 ',"'+ 16 coalesce(b.c.value('local-name(.)', 'NVARCHAR(MAX)'),'')+'":"'+ b.c.value('text()[1]','NVARCHAR(MAX)') +'"' 17 from x.a.nodes('*') b(c) for xml path(''),type).value('(./text())[1]','NVARCHAR(MAX)'),1,1,'') 18 +'}' 19 from @XmlData.nodes('/root/*') x(a)) JSON(theLine) 20 for xml path(''),type).value('.','NVARCHAR(MAX)' ) 21 ,1,1,'')); 22 end; 23 go 24 25 -- test table and data 26 create table [dbo].[PivotExample] 27 ( 28 [Country] [nvarchar](50) null 29 ,[Year] [smallint] not null 30 ,[SalesAmount] [money] null 31 ) 32 on 33 [PRIMARY]; 34 35 36 insert into [dbo].[PivotExample]values('Australia', 2005, 1309047.1978); 37 insert into [dbo].[PivotExample]values('Germany', 2006, 521230.8475); 38 insert into [dbo].[PivotExample]values('United States', 2007, 2838512.355); 39 insert into [dbo].[PivotExample]values('France', 2008, 922179.04); 40 41 42 declare @xml xml; 43 set @xml=(select top 4 * from [dbo].[PivotExample] for xml path, root); 44 45 select dbo.fnXmlToJson(@xml); 46 47 --return string 48 {"Country":"Australia","Year":"2005","SalesAmount":"1309047.1978"}, 49 {"Country":"Germany","Year":"2006","SalesAmount":"521230.8475"}, 50 {"Country":"United States","Year":"2007","SalesAmount":"2838512.3550"}, 51 {"Country":"France","Year":"2008","SalesAmount":"922179.0400"}
相关文章推荐
- mysql5.6.25及以上下载衔接
- MySQL修改root密码的多种方法
- 使用mysql索引的规则
- Mybatis调用Oracle带包存储过程
- java之redis篇(spring-data-redis整合一)
- MySQL数据导出与导入
- memcached的key,value,过期时间的限制
- MySQL查询优化之explain的深入解析
- mysql 性能优化方向
- 基于redis的处理session的方法
- SQLite语法图表 - Syntax Diagrams For SQLite
- mysql分区(partition)
- MySql5.7 ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
- 8、redis之事务1-redis命令
- Oracle批量执行SQL语句
- MySql 小数型
- mysql使用小技巧
- MySql int性数据表
- 单实例 Oracle关闭、启动、退出命令
- 跟我一起学Microsoft SQL Server 2012 Internals(1.5)