【发布时间】:2018-03-21 18:33:53
【问题描述】:
我们最近将后端数据库从 SQL Server 2012 升级到了 SQL Server 2016,我意识到它支持 JSON 对象。我们的网络服务之一以以下格式返回数据,我正在尝试使用 OPENJSON 函数直接使用它。
{
"RESULT_1": {
"columns": ["col1", "col2", "col3", "col4"],
"data": [
["0", null, "12345", "other"],
["1", "a", "54321", "MA"],
["0", null, "76543", "RI"]
]
}
}
我想确保从“列部分”读取列名,并确保在 SQL Server 2016 中读取和推送正确的数据。
DECLARE @Json_Array2 nvarchar(max) = '{
"RESULT_1": {
"columns": ["col1", "col2", "col3", "col4"],
"data": [
["0", null, "12345", "other"],
["1", "a", "54321", "MA"],
["0", null, "76543", "RI"]
]
} }';
SELECT [key], value
FROM OPENJSON(@Json_Array2,'$.RESULT_1.columns')
SELECT [key], value
FROM OPENJSON(@Json_Array2,'$.RESULT_1.data')
通过上述语句,我能够提取列和数据数组。是否可以将这些数据转储到具有相同列名的平面表(已经存在)中?
我可以通过以下方式查看某一特定行的所有值:
SELECT [key], value
FROM OPENJSON(@Json_Array2,'$.RESULT_1.data[0]')
key value
0 0
1 NULL
2 12345
3 other
感谢任何指针。
谢谢
【问题讨论】:
标签: json sql-server database sql-server-2016