用T-SQL解析JSON
我希望只选择JSON字符串中的每个值名称和值,并在SQL中转换为单独的列,这样我就可以轻松地将它们传递到powershell字符串中,以发送到外部API用T-SQL解析JSON,json,sql-server,tsql,pivot,open-json,Json,Sql Server,Tsql,Pivot,Open Json,我希望只选择JSON字符串中的每个值名称和值,并在SQL中转换为单独的列,这样我就可以轻松地将它们传递到powershell字符串中,以发送到外部API DECLARE @json NVARCHAR(MAX) SET @json='{ "InsertRecordData": { "data": { "AdditionalData": { "DataObjects": { "ObjData": { "Name": "coll_exclude", "Fields": { "Fiel
DECLARE @json NVARCHAR(MAX)
SET @json='{ "InsertRecordData": { "data": { "AdditionalData": { "DataObjects": { "ObjData": { "Name": "coll_exclude", "Fields": { "FieldData1": { "Name": "agreement", "Value": "1234" }, "FieldData2": { "Name": "system", "Value": "live" }, "FieldData3": { "Name": "date_added", "Value": "2019-08-01" }, "FieldData4": { "Name": "time_added", "Value": "11:20" } } } } } } } }';
SELECT *
FROM OPENJSON(@json,'$.InsertRecordData.data.AdditionalData.DataObjects.ObjData.Fields')
所以我想看看
Agreement System Date_added time_added
1234 live 2019-08-01 11:20
使用mssql pivot()
太好了。。谢谢
DECLARE @json NVARCHAR(MAX)
SET @json='{ "InsertRecordData": { "data": { "AdditionalData": { "DataObjects": { "ObjData": { "Name": "coll_exclude", "Fields": { "FieldData1": { "Name": "agreement", "Value": "1234" }, "FieldData2": { "Name": "system", "Value": "live" }, "FieldData3": { "Name": "date_added", "Value": "2019-08-01" }, "FieldData4": { "Name": "time_added", "Value": "11:20" } } } } } } } }';
select [agreement], [system], [date_added], [time_added] from
(
SELECT json_value(js.value, '$.Name') as Titles, json_value(js.value, '$.Value') as val
FROM OPENJSON(@json,'$.InsertRecordData.data.AdditionalData.DataObjects.ObjData.Fields') as js) as SourceTb
PIVOT
(
max(val)
FOR Titles in ([agreement], [system], [date_added], [time_added])
) as PivotTable