SQL Server中將查詢結(jié)果轉(zhuǎn)換為Json格式腳本分享
更新時(shí)間:2015年02月27日 11:35:32 投稿:junjie
這篇文章主要介紹了SQL Server中將查詢結(jié)果轉(zhuǎn)換為Json格式腳本分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
腳本源碼:
復(fù)制代碼 代碼如下:
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
使用方法:
復(fù)制代碼 代碼如下:
EXEC[SerializeJSON]'SELECT*FROM[Employee_TBL]'
相關(guān)文章
sql 百萬級(jí)數(shù)據(jù)庫優(yōu)化方案分享
這篇文章介紹了sql 百萬級(jí)數(shù)據(jù)庫優(yōu)化方案,有需要的朋友可以參考一下2013-10-10sql server 2008 壓縮備份數(shù)據(jù)庫(20g)
這篇文章主要介紹了針對20g數(shù)據(jù)庫的遷移問題,,需要的朋友可以參考下2018-03-03淺析SQL Server中包含事務(wù)的存儲(chǔ)過程
數(shù)據(jù)庫事務(wù)(Database Transaction) ,是指作為單個(gè)邏輯工作單元執(zhí)行的一系列操作,要么完整地執(zhí)行,要么完全地不執(zhí)行。那么在存儲(chǔ)過程里添加事務(wù),則可以保證該事務(wù)里的所有sql代碼要么完全執(zhí)行要么完全不執(zhí)行。2014-08-08SQL SERVER使用ODBC 驅(qū)動(dòng)建立的鏈接服務(wù)器調(diào)用存儲(chǔ)過程時(shí)參數(shù)不能為NULL值
這篇文章主要介紹了SQL SERVER使用ODBC 驅(qū)動(dòng)建立的鏈接服務(wù)器調(diào)用存儲(chǔ)過程時(shí)參數(shù)不能為NULL值的相關(guān)資料,需要的朋友可以參考下2016-01-01淺談mssql access數(shù)據(jù)庫 top分頁方法
雙top法相比于not in和max法,就是可以傳入一條sql語句來生成分頁sql語句,也可多字段排序2013-10-10SQLServer存儲(chǔ)過程實(shí)現(xiàn)單條件分頁
本文主要介紹了SQLServer存儲(chǔ)過程實(shí)現(xiàn)單條件分頁的方法,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03實(shí)現(xiàn)按關(guān)健字模糊查詢,并按匹配度排序的SQL語句
SQL語句實(shí)現(xiàn)按關(guān)健字模糊查詢,并按匹配度排序2009-09-09