【问题标题】:Pass JSON directly to SQL Server 2016将 JSON 直接传递到 SQL Server 2016
【发布时间】:2019-10-04 02:14:25
【问题描述】:

我想将 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);

我明白了

0   {   "PMID": "31390573",   "pubdate": "2019",   "data": {    "memberID": "1692",    "pmid": "31390573",      "sortpubdate": "2019/08/06 00:00",    "pmc": "PMC6733019"   }  }    5
1   {   "PMID": "31213464",   "pubdate": "2019",   "data": {    "memberID": "1692",    "pmid": "31213464",      "sortpubdate": "2019/08/15 00:00",    "pmc": "PMC6753942"   }  }    5
2   {   "PMID": "31130363",   "pubdate": "2019",   "data": {    "memberID": "1692",    "pmid": "31130363",      "sortpubdate": "2019/06/20 00:00",    "pmc": "PMC6588466"   }  }    5

我想最终得到一个表,其中一列用于数据元素中的项目,因此一列用于 memberID -- pmid --sortpubdate--pmc。

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

这可能吗?如果是 XML,则可以将其撕开并进行处理。

【问题讨论】:

    标签: json sql-server-2016 open-json


    【解决方案1】:

    我找到了我的答案,我会把它留在这里以防其他人需要它

    SELECT *  
    FROM OPENJSON(@json)  
      WITH ( 
            memberID int '$.data.memberID', pmid int '$.data.pmid',  
             sortpubdate datetime2 '$.data.sortpubdate') 
    END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      相关资源
      最近更新 更多