SQL SERVER 将XML变量转为JSON文本

前端技术 2023/09/07 MSSQL

废话不多说了,直接给大家贴代码了。

-- 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

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。