sql table数据转json数据

这篇博客演示了如何使用SQL将表数据转换为JSON格式,包括转换所有字段、指定字段、排除字段以及转换为对象类型,并提供了带有where条件的转换示例。
摘要由CSDN通过智能技术生成
create proc [dbo].[TableToJson]
@tableName varchar(30)				--表名,临时表需要 # 开头
/* 需要转换的列名,支持三种方式:
 * 1. ='', 转换所有字段;
 * 2. ='colName1,colName2,colName3,...', 转换输入的字段;
 * 3. ='<>,colName1,colName2,colName3,...', 转换除了输入字段的其他字段
*/
,@toJsonColArry varchar(500)		
,@whereStr varchar(500)=''			--表where条件 
,@toObjectOrJson char(1)='J'		--O生成Object,J生成Json,S生成JsonString(对{}里面的"(双引号)使用\(斜杠)进行转义,并且{}使用"(双引号)包括)
/*标识该字段的值是object类型,仅当toObjectOrJson='J'时有效。当生成Json数据时,该字段的值不用""(双引号)包括
 * 1. ='',	默认是string类型。即字段的值用""(双引号)包括
 * 2. ='colName1,colName2,colName3,...',标识该字段的值是object类型
*/
,@objectColArry varchar(500)=''		
,@jsonStr nvarchar(max) output		--输出生成Object或Json字符串

as
set nocount on
	--declare @toJsonColArry varchar(500)='pnIsErr,priceIsErr,priceMaxErr',@tableName varchar(30)='#temp_tb'
	--drop table #splitTb
	/******************获取表的表名和表id,数据表从syscolumns 表获取,临时表从 tempdb.dbo.syscolumns 表获取*******************/
	declare @colTable varchar(30)='',@colTable_id int=1
	if (isnull(object_id(@tableName),'')<>'')
	begin
		select @colTable='syscolumns',@colTable_id=object_id(@tableName)
	end
	else if(isnull(object_id('tempdb..'+(@tableName)),'')<>'')
	begin 
		select @colTable='tempdb.dbo.syscolumns',@colTable_id=object_id('tempdb..'+(@tableName))
	end
	--表不存在,返回空字符
	else
	begin
		set @jsonStr=''
		return
	end
	/******************生成字段名过滤字符串*******************/
	declare @nameStr nvarchar(max)=''
	if(isnull(@toJsonColArry,'')<>'')
	begin
		select * into #colNameArry from dbo.fn_split(@toJsonColArry,',')
		declare @cols nvarchar(max)=''
		declare @seq int =1,@maxSeq int
		set @maxSeq=(select max(seq) from #colNameArry)
		
		if((select  value from #colNameArry where seq=1)='<>')
		begin
			set @seq=2
			set @nameStr=@nameStr+' and name not in ('
		end
		else
		begin
			set @seq=1
			set @n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值