您的位置:首页 > 博客中心 > 数据库 >

在SQL 中生成JSON数据

时间:2022-03-10 17:37

这段时间接手一个数据操作记录的功能,刚拿到手上的时候打算用EF做,后来经过仔细考虑最后还是觉定放弃,最后思考再三决定:

1、以模块为单位分表、列固定(其实可以所有的操作记录都放到同一个表,但是考虑到数据量大的时候查询性能的问题还是分表吧)列:主键ID、引用记录主键ID、操作时间、操作类型、详细信息(里面存储的就是序列化后的值)

2、在客服端解析保存的序列化的值

但是用xml还是用json呢,这有是一个问题,显然用xml在存储过程正很容易就能生成了:SELECT * FROM TABLE FOR XML AUTO 就ok了,

但是用xml的话,在客服端解析就麻烦些了,所以弃用了xml保存,而使用了最爱的json,现在的问题就是写一个通用的存储过程来生成json了,经过我1天多的拼写终于出炉了(其实难度不大,就是拼字符串容易出错)

 ‘[‘ + char(10)
    + REVERSE(STUFF(REVERSE(CAST((SELECT char(9) + char(9) + json + ‘,‘ + char(10) AS [text()] FROM #tmpJsonTable FOR XML PATH(‘‘)) AS varchar(max))),1,2,‘‘))
    + char(10) + char(9) + char(9) + ‘]‘
 -- + char(10) + ‘}‘
drop table #tmpJsonTable
 
 
--DECLARE @table_name varchar(100)=‘SalesOrder‘,
-- @ConvertColumns NVARCHAR(max)=‘SalesOrderNo,SalesOrderID‘,
-- @Condition NVARCHAR(max)=‘‘,
-- @json varchar(max)
 
--EXEC GetJSON @table_name=@table_name,@ConvertColumns=@ConvertColumns,@Condition=@Condition,@json=@json OUTPUT
--SELECT @json
调用这个存储过程使用输出参数就可以得到序列化后的json数据了。
至此,就差在客服端解析了。打算写个方法根据传递过来的json对象参数来动态解析,这样 ui页面上也不需要用每个地方都去解析了....
 

在SQL 中生成JSON数据,布布扣,bubuko.com

热门排行

今日推荐

热门手游