zoukankan      html  css  js  c++  java
  • 将select 转为json

    CREATE PROCEDURE[dbo].[WXSP_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]'


  • 相关阅读:
    [转]Docker学习笔记之一,搭建一个JAVA Tomcat运行环境
    ubuntu wifi连接出现Network service discovery disabled的解决办法
    使用java实现对称加密解密(AES),非对称加密解密(RSA)
    [转] mysql分区性能初探
    CyclicBarrier和CountDownLatch的使用
    oom 和 jvm crash的问题
    使用单元素枚举实现单例
    【转】mysql 计划事件
    用Linkedhashmap的LRU特性及SoftReference软引用构建二级缓存
    动态生成正则表达式
  • 原文地址:https://www.cnblogs.com/liubj-sql-json/p/11791926.html
Copyright © 2011-2022 走看看