一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - SQL Server中將查詢結果轉換為Json格式腳本分享

SQL Server中將查詢結果轉換為Json格式腳本分享

2020-04-13 13:07junjie Sql Server

這篇文章主要介紹了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]'

 

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 狠狠色综合久久久久尤物 | 国产成人久久久精品一区二区三区 | 日韩欧美不卡视频 | 国产日日干 | 无人区免费一二三四乱码 | 国产51 | 热九九精品 | 四虎精品成人a在线观看 | 丝瓜香蕉视频 | 97色综合| 精品久久久久久影院免费 | 四虎影视在线看免费 720p | 亚洲精品一区制服丝袜 | 深夜福利免费在线观看 | 国产成人一区二区三区视频免费蜜 | 亚洲图片一区二区三区 | 美女扒开胸罩露出胸大乳 | 国色天香视频资源网 | 国产拍拍拍免费专区在线观看 | 美女牲交毛片一级视频 | 日本sss在线高清观看 | 羞羞污视频 | 满溢游泳池免费 | 奇米影视小说 | 免费高清www动漫视频播放器 | 欧美理论片手机在线观看片免费 | 国产成人+亚洲欧洲 | 日韩精品成人在线 | 欧美性bbbbbxxxxxxx | 美女岳肉太深了使劲 | 欧美3d怪物交videos网站 | 久久视频在线视频观看天天看视频 | 欧美区一区 | 日韩视频一区二区 | freexxxxxhd张柏芝 | 国产精品俺来也在线观看了 | 欧美精品日韩 | 国产福利在线观看91精品 | 男人的天堂久久 | 羞羞私人影院可以直接免费观影吗 | 国产精品青青青高清在线 |