如何从SQL Server中的EAV表创建JSON
发布时间:2020-12-12 06:35:43 所属栏目:MsSql教程 来源:网络整理
导读:如果你有一个简单的表,如: Id Name Age 1 Saeed 32 2 John 28 3 David 34 然后,您可以在SQL Server中使用For XML创建JSON,如下所示: select '{ name : "' + Name + '",age : ' + age + ' }'from Peoplewhere Id = 1for xml path('') 这很容易,因为预先知道
如果你有一个简单的表,如:
Id Name Age 1 Saeed 32 2 John 28 3 David 34 然后,您可以在SQL Server中使用For XML创建JSON,如下所示: select '{ name : "' + Name + '",age : ' + age + ' }' from People where Id = 1 for xml path('') 这很容易,因为预先知道列.但是,我坚持从EAV表创建JSON.例如,如果表是: Id EntityId Key Value 1 1 Name Saeed 2 1 Age 32 3 1 Gender Male 4 1 Key1 Value1 5 1 Key2 Value2 我该如何创建这个JSON? { Name: "Saeed",Age: 32,Gender: "Male",Key1: "Value1",Key2: "Value2" } 从这个查询: select * from PeopleEav where EntityId = 1 请注意,键的数量是可变的(它是一个EAV表). 解决方法试试这个 –DECLARE @PeopleEav TABLE ( Id INT IDENTITY(1,1),EntityId INT,[Key] VARCHAR(30),Value VARCHAR(100) ) INSERT INTO @PeopleEav (EntityId,[Key],Value) VALUES (1,'Name','Saeed'),(1,'Age','32'),'Gender','Male'),'Key1','Value1'),'Key2','Value2') SELECT t.EntityId,JSON = STUFF(( SELECT ',' + [Key] + ': "' + Value + '"' FROM @PeopleEav t2 WHERE t2.EntityId = t2.EntityId FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,2,'{ ') + ' }' FROM ( SELECT DISTINCT EntityId FROM @PeopleEav ) t --WHERE EntityId = 1 输出 – EntityId JSON ----------- -------------------------------------------------------------------------------------------- 1 { Name: "Saeed",Age: "32",Key2: "Value2" } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |