Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON直接传递给SQL Server 2016_Json_Sql Server 2016_Open Json - Fatal编程技术网

将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

我希望将JSON对象传递给SQL Server 2016存储过程,而不反序列化该对象,并让数据库处理数据

我要经过:

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