SqlServer中怎么将查询结果转换为XML和JSON
这篇文章将为大家详细讲解有关SqlServer中怎么将查询结果转换为XML和JSON,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
1.查询结果转XML
DECLARE@ParameterSQLNVARCHAR(MAX)='SELECT*FROMtable';DECLARE@SQLNVARCHAR(MAX)DECLARE@XMLStringVARCHAR(MAX)DECLARE@XMLXMLDECLARE@ParamlistNVARCHAR(1000)SET@Paramlist=N'@XMLXMLOUTPUT'SET@SQL='WITHPrepareTable(XMLString)'SET@SQL=@SQL+'AS('SET@SQL=@SQL+@ParameterSQL+'FORXMLRAW,TYPE,ELEMENTS'SET@SQL=@SQL+')'SET@SQL=@SQL+'SELECT@XML=[XMLString]FROM[PrepareTable]'EXECsp_executesql@SQL,@Paramlist,@XML=@XMLOUTPUTSET@XMLString=CAST(@XMLASVARCHAR(MAX))SELECT@XML;SELECT@XMLString;
其中@ParameterSQL为要查询的语句,@XMLXML格式数据,@XMLStringXML转成字符串
2.查询结果转JSON
查询结果转换成json需要经过两个步骤,首先将查询结果转成XML数据,然后通过XML数据转成json
XML转JSON的存储过程如下:
CREATEPROCEDURE[dbo].[SerializeJSON](@XMLXML,@json_xmlNVARCHAR(MAX)OUTPUT)ASBEGINDECLARE@XMLStringNVARCHAR(MAX);SET@XMLString=CAST(@XMLASNVARCHAR(MAX));BEGINTRY--//开始捕捉异常DECLARE@JSONNVARCHAR(MAX);DECLARE@RowVARCHAR(MAX);DECLARE@RowStartINT;DECLARE@RowEndINT;DECLARE@FieldStartINT;DECLARE@FieldEndINT;DECLARE@KEYVARCHAR(MAX);DECLARE@ValueVARCHAR(MAX);DECLARE@StartRootVARCHAR(100);SET@StartRoot='<row>';DECLARE@EndRootVARCHAR(100);SET@EndRoot='</row>';DECLARE@StartFieldVARCHAR(100);SET@StartField='<';DECLARE@EndFieldVARCHAR(100);SET@EndField='>';SET@RowStart=CHARINDEX(@StartRoot,@XMLString,0);SET@JSON='';WHILE@RowStart>0BEGINSET@RowStart=@RowStart+LEN(@StartRoot);SET@RowEnd=CHARINDEX(@EndRoot,@XMLString,@RowStart);SET@Row=SUBSTRING(@XMLString,@RowStart,@RowEnd-@RowStart);SET@JSON=@JSON+'{';--//foreachrowSET@FieldStart=CHARINDEX(@StartField,@Row,0);WHILE@FieldStart>0BEGIN--//parsenodekeySET@FieldStart=@FieldStart+LEN(@StartField);SET@FieldEnd=CHARINDEX(@EndField,@Row,@FieldStart);DECLARE@endINT=CHARINDEX('/>',@Row,@FieldStart);IF@end<1OR@end>@FieldEndBEGINSET@KEY=SUBSTRING(@Row,@FieldStart,@FieldEnd-@FieldStart);SET@JSON=@JSON+'"'+@KEY+'":';--//parsenodevalueSET@FieldStart=@FieldEnd+1;SET@FieldEnd=CHARINDEX('</',@Row,@FieldStart);SET@Value=SUBSTRING(@Row,@FieldStart,@FieldEnd-@FieldStart);SET@JSON=@JSON+'"'+@Value+'",';END;SET@FieldStart=@FieldStart+LEN(@StartField);SET@FieldEnd=CHARINDEX(@EndField,@Row,@FieldStart);SET@FieldStart=CHARINDEX(@StartField,@Row,@FieldEnd);END;IFLEN(@JSON)>0SET@JSON=SUBSTRING(@JSON,0,LEN(@JSON));SET@JSON=@JSON+'},';--//foreachrowSET@RowStart=CHARINDEX(@StartRoot,@XMLString,@RowEnd);END;IFLEN(@JSON)>0SET@JSON=SUBSTRING(@JSON,0,LEN(@JSON));--//SET@JSON='['+@JSON+']';SET@json_xml=@JSON;ENDTRY--//结束捕捉异常BEGINCATCH--//有异常被捕获SET@json_xml=@XMLString;ENDCATCH;--//结束异常处理END;
关于SqlServer中怎么将查询结果转换为XML和JSON就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。