手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >SQL Server中将查询结果转换为Json格式脚本分享
SQL Server中将查询结果转换为Json格式脚本分享
摘要:脚本源码:复制代码代码如下:SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEPROCEDURE...

脚本源码:

复制代码 代码如下:

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE[dbo].[SerializeJSON](

@ParameterSQL AS VARCHAR(MAX)

)

AS

BEGIN

DECLARE @SQL NVARCHAR(MAX)

DECLARE @XMLString VARCHAR(MAX)

DECLARE @XML XML

DECLARE @Paramlist NVARCHAR(1000)

SET @Paramlist = N'@XML XML OUTPUT'

SET @SQL = 'WITH PrepareTable (XMLString)'

SET @SQL = @SQL + 'AS('

SET @SQL = @SQL + @ParameterSQL+ 'FOR XML RAW,TYPE,ELEMENTS'

SET @SQL = @SQL + ')'

SET @SQL = @SQL + 'SELECT @XML=[XMLString]FROM[PrepareTable]'

EXEC sp_executesql @SQL, @Paramlist, @XML=@XML OUTPUT

SET @XMLString=CAST(@XML AS VARCHAR(MAX))

DECLARE @JSON VARCHAR(MAX)

DECLARE @Row VARCHAR(MAX)

DECLARE @RowStart INT

DECLARE @RowEnd INT

DECLARE @FieldStart INT

DECLARE @FieldEnd INT

DECLARE @KEY VARCHAR(MAX)

DECLARE @Value VARCHAR(MAX)

DECLARE @StartRoot VARCHAR(100);SET @StartRoot='<row>'

DECLARE @EndRoot VARCHAR(100);SET @EndRoot='</row>'

DECLARE @StartField VARCHAR(100);SET @StartField='<'

DECLARE @EndField VARCHAR(100);SET @EndField='>'

SET @RowStart=CharIndex(@StartRoot,@XMLString,0)

SET @JSON=''

WHILE @RowStart>0

BEGIN

SET @RowStart=@RowStart+Len(@StartRoot)

SET @RowEnd=CharIndex(@EndRoot,@XMLString,@RowStart)

SET @Row=SubString(@XMLString,@RowStart,@RowEnd-@RowStart)

SET @JSON=@JSON+'{'

-- for each row

SET @FieldStart=CharIndex(@StartField,@Row,0)

WHILE @FieldStart>0

BEGIN

-- parse node key

SET @FieldStart=@FieldStart+Len(@StartField)

SET @FieldEnd=CharIndex(@EndField,@Row,@FieldStart)

SET @KEY=SubString(@Row,@FieldStart,@FieldEnd-@FieldStart)

SET @JSON=@JSON+'"'+@KEY+'":'

-- parse node value

SET @FieldStart=@FieldEnd+1

SET @FieldEnd=CharIndex('</',@Row,@FieldStart)

SET @Value=SubString(@Row,@FieldStart,@FieldEnd-@FieldStart)

SET @JSON=@JSON+'"'+@Value+'",'

SET @FieldStart=@FieldStart+Len(@StartField)

SET @FieldEnd=CharIndex(@EndField,@Row,@FieldStart)

SET @FieldStart=CharIndex(@StartField,@Row,@FieldEnd)

END

IF LEN(@JSON)>0SET @JSON=SubString(@JSON,0,LEN(@JSON))

SET @JSON=@JSON+'},'

--/ for each row

SET @RowStart=CharIndex(@StartRoot,@XMLString,@RowEnd)

END

IF LEN(@JSON)>0SET @JSON=SubString(@JSON,0,LEN(@JSON))

SET @JSON='['+@JSON+']'

SELECT @JSON

END

GO

使用方法:

复制代码 代码如下:

EXEC[SerializeJSON]'SELECT*FROM[Employee_TBL]'

【SQL Server中将查询结果转换为Json格式脚本分享】相关文章:

SQL Server日志过大会影响查询结果

SQL Server中网络备份一例

SQL Server 不存在或访问被拒绝(转)

SQL Server全文索引服务

SQLServer中master数据库分析

SQLServer 中.与::的区别

简单的SQL Server备份脚本代码

SQL Server2005下的安全操作技巧分享

sql server查询时间技巧分享

SQL Server 临时表的删除

精品推荐
分类导航