麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > SQL Server > 正文

SqlServer將查詢結果轉換為XML和JSON

2024-08-31 01:04:59
字體:
來源:轉載
供稿:網友

很久之前用到的,現在整理在這,里面一些代碼來源于網上,不過有些bug已被我修改了。

1.查詢結果轉XML

DECLARE @ParameterSQL NVARCHAR(MAX)='SELECT * FROM table';DECLARE @SQL NVARCHAR(MAX)DECLARE @XMLString VARCHAR(MAX)DECLARE @XML XMLDECLARE @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 OUTPUTSET @XMLString=CAST(@XML AS VARCHAR(MAX))SELECT @XML;SELECT @XMLString;

其中@ParameterSQL為要查詢的語句,@XMLXML格式數據,@XMLStringXML轉成字符串

2.查詢結果轉JSON

查詢結果轉換成json需要經過兩個步驟,首先將查詢結果轉成XML數據,然后通過XML數據轉成json

XML轉JSON的存儲過程如下:

CREATE PROCEDURE [dbo].[SerializeJSON] (   @XML XML,   @json_xml NVARCHAR(MAX) OUTPUT  )ASBEGIN  DECLARE @XMLString NVARCHAR(MAX);  SET @XMLString = CAST(@XML AS NVARCHAR(MAX));  BEGIN TRY--//開始捕捉異常    DECLARE @JSON NVARCHAR(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);        DECLARE @end INT = CHARINDEX('/>', @Row, @FieldStart);        IF @end<1          OR @end>@FieldEnd        BEGIN          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 + '",';        END;        SET @FieldStart = @FieldStart + LEN(@StartField);        SET @FieldEnd = CHARINDEX(@EndField, @Row, @FieldStart);        SET @FieldStart = CHARINDEX(@StartField, @Row, @FieldEnd);      END;      IF LEN(@JSON)>0        SET @JSON = SUBSTRING(@JSON, 0, LEN(@JSON));      SET @JSON = @JSON + '},';      --// for each row      SET @RowStart = CHARINDEX(@StartRoot, @XMLString, @RowEnd);    END;    IF LEN(@JSON)>0      SET @JSON = SUBSTRING(@JSON, 0, LEN(@JSON));    --//SET @JSON = '[' + @JSON + ']';    SET @json_xml = @JSON;  END TRY--//結束捕捉異常  BEGIN CATCH--//有異常被捕獲    SET @json_xml = @XMLString;  END CATCH;--//結束異常處理END;

以上所述是小編給大家介紹的SqlServer將查詢結果轉換為XML和JSON,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 牛牛a级毛片在线播放 | 欧美精品成人一区二区在线观看 | 久久久婷婷 | 精品久久久久久久久久久aⅴ | 大学生a级毛片免费视频 | 成年人在线视频免费 | 免费a级网站 | 久久在线精品视频 | 国产成人精品免高潮在线观看 | 日韩视频中文 | 国产精品欧美久久久久一区二区 | 日韩字幕在线观看 | 欧美日本免费一区二区三区 | 国产在线看一区 | 欧美一级欧美 | 国产成人自拍av | 亚洲一区免费观看 | 欧美亚洲一级 | hdhdhd69ⅹxxx黑人 | 国产午夜亚洲精品理论片大丰影院 | 黄色网址入口 | 久久17 | 日本xxxx色视频在线观看免费, | 久久国产精品区 | 亚洲自拍第一 | 一级做a爰片性色毛片2021 | 免费毛片视频播放 | 国产精品免费在线 | 特一级毛片 | 亚洲精品无码不卡在线播放he | 爽爽淫人综合网网站 | 海外中文字幕在线观看 | 久久综合狠狠综合久久 | 狠狠99| 国产精品一品二区三区四区18 | 国产在线欧美日韩 | 国产二区三区在线播放 | 爱逼av| 亚洲射情 | 欧美激情 在线播放 | 国产精品性夜天天视频 |