最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年07月06日 15:47:02   作者:ArtlessBruin  
這篇文章主要介紹了SqlServer將查詢結果轉換為XML和JSON的相關資料,需要的朋友可以參考下

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

1.查詢結果轉XML

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

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

2.查詢結果轉JSON

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

XML轉JSON的存儲過程如下:

CREATE PROCEDURE [dbo].[SerializeJSON] (
   @XML XML,
   @json_xml NVARCHAR(MAX) OUTPUT
  )
AS
BEGIN
  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,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • sql中COALESCE函數(shù)的使用小結

    sql中COALESCE函數(shù)的使用小結

    COALESCE函數(shù)用于從其參數(shù)列表中返回第一個非NULL值,本文主要介紹了sql中COALESCE函數(shù)的使用小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-04-04
  • 在IDEA上面連接Sql?Server數(shù)據(jù)庫教程(親測有用)

    在IDEA上面連接Sql?Server數(shù)據(jù)庫教程(親測有用)

    這篇文章主要給大家介紹了關于在IDEA上面連接Sql?Server數(shù)據(jù)庫的相關資料,Idea的還有個強大之處就是連接數(shù)據(jù)庫,就可以少開一個數(shù)據(jù)庫工具,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • SQL 復合查詢條件(AND,OR,NOT)對NULL值的處理方法

    SQL 復合查詢條件(AND,OR,NOT)對NULL值的處理方法

    在SQL的3值邏輯下,一個查詢條件可以產生以下三種情況:TRUE,FALSE,NULL。只有那些滿足WHERE子句的值是TRUE的記錄才出現(xiàn)在結果表中。
    2011-04-04
  • SqlServer異常處理常用步驟

    SqlServer異常處理常用步驟

    SQL Server常見的問題主要是SQL問題造成,常見的主要是CPU過高和阻塞。關于SqlServer異常處理常用步驟有哪些呢?大家了解嗎?下面小編通過本篇文章給大家介紹SqlServer異常處理常用步驟,感興趣的朋友一起看看吧
    2015-11-11
  • 淺談Transact-SQL

    淺談Transact-SQL

    Transact-SQL 是使用 SQL Server 的核心。 與 SQL Server 實例通信的所有應用程序都通過將 Transact-SQL 語句發(fā)送到服務器進行通信,而不管應用程序的用戶界面如何。
    2014-08-08
  • 數(shù)據(jù)庫中布爾值(true和false)的存儲方式示例詳解

    數(shù)據(jù)庫中布爾值(true和false)的存儲方式示例詳解

    這篇文章主要介紹了多種數(shù)據(jù)庫中布爾值的存儲類型,包括TINYINT、BOOLEAN/BOOL、BIT和CHAR/VARCHAR,并討論了每種類型的特點、適用場景以及選擇布爾值存儲類型時需要考慮的因素,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-03-03
  • ASP.NET和MSSQL高性能分頁實例代碼

    ASP.NET和MSSQL高性能分頁實例代碼

    這篇文章主要介紹了ASP.NET和MSSQL高性能分頁實例代碼的相關資料,需要的朋友可以參考下
    2016-01-01
  • SQL?Server時間轉換3種方法總結

    SQL?Server時間轉換3種方法總結

    SQL?Server中處理日期和時間的常用方法有三種:FORMAT、CONVERT和DATEADD,這篇文章主要介紹了SQL?Server時間轉換的3種方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-09-09
  • SQL窗口函數(shù)之取值窗口函數(shù)的使用

    SQL窗口函數(shù)之取值窗口函數(shù)的使用

    取值窗口函數(shù)可以用于返回窗口內指定位置的數(shù)據(jù)行,本文就主要介紹了SQL 取值窗口函數(shù)的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2022-04-04
  • 一文搞懂MySQL臟讀,幻讀和不可重復讀

    一文搞懂MySQL臟讀,幻讀和不可重復讀

    這篇文章主要介紹了一文搞懂MySQL臟讀,幻讀和不可重復讀,MySQL?默認的事務隔離級別是可重復讀,文章通過MySQL?中事務的隔離級別展開全文詳細內容,需要的小伙伴可以參考一下
    2022-05-05

最新評論

五指山市| 芜湖县| 剑河县| 丰城市| 黄大仙区| 铜梁县| 东莞市| 中宁县| 钦州市| 沙河市| 洞头县| 荃湾区| 克拉玛依市| 贡觉县| 宁城县| 新源县| 四子王旗| 涞源县| 卢湾区| 大同县| 班玛县| 巴林右旗| 民丰县| 井冈山市| 龙岩市| 海盐县| 原平市| 浪卡子县| 万盛区| 鄂托克旗| 武冈市| 乐亭县| 临潭县| 石城县| 正镶白旗| 罗定市| 敦化市| 沁源县| 乌恰县| 阜平县| 长沙市|