• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SQL Server中将查询结果转换为Json格式脚本分享

    脚本源码:

    复制代码 代码如下:

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

    您可能感兴趣的文章:
    • SqlServer将查询结果转换为XML和JSON
    • SQLServer中JSON文档型数据的查询问题解决
    上一篇:Sql Server中的DBCC命令详细介绍
    下一篇:SQL Server中将数据导出为XML和Json方法分享
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    SQL Server中将查询结果转换为Json格式脚本分享 SQL,Server,中将,查询,结果,