当前位置:   article > 正文

sql table数据转json数据_sql table to json

sql table to json
  1. create proc [dbo].[TableToJson]
  2. @tableName varchar(30) --表名,临时表需要 # 开头
  3. /* 需要转换的列名,支持三种方式:
  4. * 1. ='', 转换所有字段;
  5. * 2. ='colName1,colName2,colName3,...', 转换输入的字段;
  6. * 3. ='<>,colName1,colName2,colName3,...', 转换除了输入字段的其他字段
  7. */
  8. ,@toJsonColArry varchar(500)
  9. ,@whereStr varchar(500)='' --表where条件
  10. ,@toObjectOrJson char(1)='J' --O生成Object,J生成Json,S生成JsonString(对{}里面的"(双引号)使用\(斜杠)进行转义,并且{}使用"(双引号)包括)
  11. /*标识该字段的值是object类型,仅当toObjectOrJson='J'时有效。当生成Json数据时,该字段的值不用""(双引号)包括
  12. * 1. ='', 默认是string类型。即字段的值用""(双引号)包括
  13. * 2. ='colName1,colName2,colName3,...',标识该字段的值是object类型
  14. */
  15. ,@objectColArry varchar(500)=''
  16. ,@jsonStr nvarchar(max) output --输出生成Object或Json字符串
  17. as
  18. set nocount on
  19. --declare @toJsonColArry varchar(500)='pnIsErr,priceIsErr,priceMaxErr',@tableName varchar(30)='#temp_tb'
  20. --drop table #splitTb
  21. /******************获取表的表名和表id,数据表从syscolumns 表获取,临时表从 tempdb.dbo.syscolumns 表获取*******************/
  22. declare @colTable varchar(30)='',@colTable_id int=1
  23. if (isnull(object_id(@tableName),'')<>'')
  24. begin
  25. select @colTable='syscolumns',@colTable_id=object_id(@tableName)
  26. end
  27. else if(isnull(object_id('tempdb..'+(@tableName)),'')<>'')
  28. begin
  29. select @colTable='tempdb.dbo.syscolumns',@colTable_id=object_id('tempdb..'+(@tableName))
  30. end
  31. --表不存在,返回空字符
  32. else
  33. begin
  34. set @jsonStr=''
  35. return
  36. end
  37. /******************生成字段名过滤字符串*******************/
  38. declare @nameStr nvarchar(max)=''
  39. if(isnull(@toJsonColArry,'')<>'')
  40. begin
  41. select * into #colNameArry from dbo.fn_split(@toJsonColArry,',')
  42. declare @cols nvarchar(max)=''
  43. declare @seq int =1,@maxSeq int
  44. set @maxSeq=(select max(seq) from #colNameArry)
  45. if((select value from #colNameArry where seq=1)='<>')
  46. begin
  47. set @seq=2
  48. set @nameStr=@nameStr+' and name not in ('
  49. end
  50. else
  51. begin
  52. set @seq=1
  53. set @n
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号