将JSON直接传递给SQL Server 2016
我希望将JSON对象传递给SQL Server 2016存储过程,而不反序列化该对象,并让数据库处理数据 我要经过:将JSON直接传递给SQL Server 2016,json,sql-server-2016,open-json,Json,Sql Server 2016,Open Json,我希望将JSON对象传递给SQL Server 2016存储过程,而不反序列化该对象,并让数据库处理数据 我要经过: DECLARE @json NVarChar(2048) = N'[{ "PMID": "31390573", "pubdate": "2019", "data": { "memberID": "1692", "pmid": "31390573", "sortpubdate": "2019/08/0
DECLARE @json NVarChar(2048) = N'[{
"PMID": "31390573",
"pubdate": "2019",
"data": {
"memberID": "1692",
"pmid": "31390573",
"sortpubdate": "2019/08/06 00:00",
"pmc": "PMC6733019"
}
}, {
"PMID": "31213464",
"pubdate": "2019",
"data": {
"memberID": "1692",
"pmid": "31213464",
"sortpubdate": "2019/08/15 00:00",
"pmc": "PMC6753942"
}
}, {
"PMID": "31130363",
"pubdate": "2019",
"data": {
"memberID": "1692",
"pmid": "31130363",
"sortpubdate": "2019/06/20 00:00",
"pmc": "PMC6588466"
}
}]'
如果我使用
SELECT * FROM OPENJSON(@json);
我明白了
我希望最后得到一个表,其中一列用于数据元素中的项,因此一列用于memberID--pmid--sortpubdate--pmc
这可能吗?如果是XML,它可以被拆分和处理。我找到了我的答案,我将把它留在这里,以防其他人需要它
SELECT *
FROM OPENJSON(@json)
WITH (
memberID int '$.data.memberID', pmid int '$.data.pmid',
sortpubdate datetime2 '$.data.sortpubdate')
END
memberID pmid sortpubdate
------------------------------------------------
1692 31390573 2019-08-06 00:00:00.0000000
1692 31213464 2019-08-15 00:00:00.0000000
1692 31130363 2019-06-20 00:00:00.0000000
SELECT *
FROM OPENJSON(@json)
WITH (
memberID int '$.data.memberID', pmid int '$.data.pmid',
sortpubdate datetime2 '$.data.sortpubdate')
END