废话不多说了,直接给大家贴代码了。
-- create function create function [dbo].[fnXmlToJson] (@XmlData xml) returns nvarchar(max) as begin return (select stuff( (select * from (select \',{\'+ stuff( (select \',\"\'+ coalesce(b.c.value(\'local-name(.)\', \'NVARCHAR(MAX)\'),\'\')+\'\":\"\'+ b.c.value(\'text()[]\',\'NVARCHAR(MAX)\') +\'\"\' from x.a.nodes(\'*\') b(c) for xml path(\'\'),type).value(\'(./text())[]\',\'NVARCHAR(MAX)\'),,,\'\') +\'}\' from @XmlData.nodes(\'/root/*\') x(a)) JSON(theLine) for xml path(\'\'),type).value(\'.\',\'NVARCHAR(MAX)\' ) ,,,\'\')); end; go -- test table and data create table [dbo].[PivotExample] ( [Country] [nvarchar]() null ,[Year] [smallint] not null ,[SalesAmount] [money] null ) on [PRIMARY]; insert into [dbo].[PivotExample]values(\'Australia\', , .); insert into [dbo].[PivotExample]values(\'Germany\', , .); insert into [dbo].[PivotExample]values(\'United States\', , .); insert into [dbo].[PivotExample]values(\'France\', , .); declare @xml xml; set @xml=(select top * from [dbo].[PivotExample] for xml path, root); select dbo.fnXmlToJson(@xml); --return string {\"Country\":\"Australia\",\"Year\":\"\",\"SalesAmount\":\".\"}, {\"Country\":\"Germany\",\"Year\":\"\",\"SalesAmount\":\".\"}, {\"Country\":\"United States\",\"Year\":\"\",\"SalesAmount\":\".\"}, {\"Country\":\"France\",\"Year\":\"2008\",\"SalesAmount\":\"922179.0400\"}
本文地址:https://www.stayed.cn/item/18887
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我